第109章(1 / 1)

大B:“都知道java最大的優點是它的完全OO化和它在多年的發展過程中吸收和總結了許多先進的框架與模式,其中工廠模式就是最常用的模式之一。”

小A:“師兄,能不能講一下涉及到的OO原則的定義?”

大B:“好的。OCP(開閉原則,Open-ClosedPrinciple):一個軟件的實體應當對擴展開放,對修改關閉。我的理解是,對於一個已有的軟件,如果需要擴展,應當在不需修改已有代碼的基礎上進行。DIP(依賴倒轉原則,DependenceInversionPrinciple):要針對接口編程,不要針對實現編程。我的理解是,對於不同層次的編程,高層次暴露給低層次的應當隻是接口,而不是它的具體類。LoD(迪米特法則,LawofDemeter):隻與你直接的朋友通信,而避免和陌生人通信。眾所周知類(或模塊)之間的通信越少,耦合度就越低,從而更有利於我們對軟件的宏觀管理。老子論‘聖人之治’有相同的思想,《老子》雲:‘是以聖人之治,虛其心,實其腹,弱其誌,常使民無知無欲。’,又雲:‘小國寡民,鄰國相望,雞犬之聲相聞,民至老死,不相往來。’。佩服我們的老祖宗,N千年前就想到了西方N千年後才想到的東西,同時也佩服《java與模式》的作者閻宏,可以用中國傳統哲學思想這麼生動的說明這一軟件設計原則。”

小A:“這麼說來,工廠方法模式有什麼意義啊?”

大B:“定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。核心工廠類不再負責產品的創建,這樣核心類成為一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使係統在不修改具體工廠角色的情況下引進新的產品。”

(本章完)