原文地址:http://blog.csdn.net/doymm2008/article/details/13288067
ava的設計模式大體上分為三大類:
- 創建型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。
- 結構型模式(7種):適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。
- 行為型模式(11種):策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
設計模式遵循的原則有6個:
1、開閉原則(Open Close Principle)
對擴展開放,對修改關閉。
2、里氏代換原則(Liskov Substitution Principle)
只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。
3、依賴倒轉原則(Dependence Inversion Principle)
這個是開閉原則的基礎,對接口編程,依賴於抽象而不依賴於具體。
4、接口隔離原則(Interface Segregation Principle)
使用多個隔離的借口來降低耦合度。
5、迪米特法則(最少知道原則)(Demeter Principle)
一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。
6、合成復用原則(Composite Reuse Principle)
原則是盡量使用合成/聚合的方式,而不是使用繼承。繼承實際上破壞了類的封裝性,超類的方法可能會被子類修改
1. 工廠模式(Factory Method)
常用的工廠模式是靜態工廠,利用static方法,作為一種類似於常見的工具類Utils等輔助效果,一般情況下工廠類不需要實例化。
1 interface food{} 2 3 class A implements food{} 4 class B implements food{} 5 class C implements food{} 6 7 public class StaticFactory { 8 9 private StaticFactory(){} 10 11 public static food getA(){ return new A(); } 12 public static food getB(){ return new B(); } 13 public static food getC(){ return new C(); } 14 } 15 16 class Client{ 17 //客戶端代碼只需要將相應的參數傳入即可得到對象 18 //用戶不需要了解工廠類內部的邏輯。 19 public void get(String name){ 20 food x = null ; 21 if ( name.equals("A")) { 22 x = StaticFactory.getA(); 23 }else if ( name.equals("B")){ 24 x = StaticFactory.getB(); 25 }else { 26 x = StaticFactory.getC(); 27 } 28 } 29 }