从周易浅看“开闭原则”
“太级生两仪,两仪生四象,四象生八卦,八卦演万物”,这句出自《周易》里的话,我们应该很熟悉了,但是最近我突然发现,这个和我们软件设计模式中的基石“开闭”原则有异曲同工之意。OCP中强调,对扩展开发,对修改关闭(引《Java与模式》)。它们如何统一到一起的呢?
首先,我们来看一下周易中所说的两仪:两仪即乾坤,乾:“—”,坤:“- -”,我们老祖宗就用这两个符号表生出了万物。
两仪到四象的过程,这是一个扩展产生新事物的过程,而在这个过程中基础的两仪是没有任何改变的,你也不可能改变它,多么强硬的“对修改关闭”。而四象是乾乾、乾坤、坤乾和坤坤,都是,基础的乾和坤组成的,对扩展开放,形成了新的东西。
其次,OCP强调对可变性的封装,在周易里也是有体现的。周易的八卦符号,都是由“乾和坤”这样的三个仪组成的,只是顺序不同罢了,如“乾乾乾”代表天,“坤坤坤”代表地等等。这里三个两仪的数量是定的,而至于是哪一个仪或顺序是如何又是变的,但是这个变都被封装在一个卦的含义里了。
呵呵,还是蛮有意思的,看来世间万物还是相同相生的。
?
?