java之設計模式

2021-08-16 05:15:29 字數 4130 閱讀 4136

編寫**原則:

開閉原則:對修改關閉、對擴充套件開發。(如利於**二次開發)

作用:1.**重用 2.低耦合(模組與模組之間,類與類之間依賴程度要降低) 3.高內聚(模組或者類內部依賴程度要高)4.易擴充 5.易維護

1.介面卡模式

橫向擴充套件,鏈條上有多個物件,每個物件持有下乙個物件的引用,這樣就會形成一條鏈,請求就在這條鏈上傳遞

到底是哪乙個物件處理請求,請求使用者是不知道的,在隱瞞使用者的情況下,對系統進行乙個動態調整。

/*** 介面卡模式 - 責任鏈模式

* created by yz on 2018/3/6.

*/public class test else if("湖北".equals(type))else if("江西".equals(type))else if("江蘇".equals(type))}}

/*** 介面卡模式 - 責任鏈模式

* 定義介面

* created by yz on 2018/3/6.

*/public inte***ce action

/*** 介面卡模式 - 責任鏈模式

* 定義抽象類實現介面

* created by yz on 2018/3/6.

*/public abstract class abstractaction implements action

public action getaction()

public void setaction(action action)

}/**

* 介面卡模式 - 責任鏈模式

* 定義湖南類繼承抽象類

* created by yz on 2018/3/6.

*/public class hunan extends abstractactionelse else}}

}/**

* 介面卡模式 - 責任鏈模式

* 定義湖北類繼承抽象類

* created by yz on 2018/3/6.

*/public class hubei extends abstractactionelse else}}

}/**

* 介面卡模式 - 責任鏈模式

* 定義江西類繼承抽象類

* created by yz on 2018/3/6.

*/public class jiangxi extends abstractactionelse else}}

}/**

* 介面卡模式 - 責任鏈模式

* 定義廣東類繼承抽象類

* created by yz on 2018/3/6.

*/public class guangdong extends abstractactionelse else}}

}/**

* 介面卡模式 - 責任鏈模式

* created by yz on 2018/3/6.

*/public class test

}3.策略模式也是消除大量if esle之一

策略模式的乙個決定權在使用者,系統本身只實現不同演算法的實現,使用者可以決定到底呼叫誰

責任鏈模式和策略模式好處:可以去除**裡面大量的if else ,可以橫向擴充套件,易於維護

/*** 介面卡模式 - 策略模式

* 定義介面 策略模式先判斷是不是自己的任務

* created by yz on 2018/3/6.

*/public inte***ce action

/*** 介面卡模式 - 策略模式

* 定義抽象類實現介面

* created by yz on 2018/3/6.

*/public abstract class abstractaction implements action

}/**

* 介面卡模式 - 策略模式

* 定義湖南類繼承抽象類

* created by yz on 2018/3/6.

*/public class hunan extends abstractaction

public boolean ismyjob(string type)

}/**

* 介面卡模式 - 策略模式

* 定義湖北類繼承抽象類

* created by yz on 2018/3/6.

*/public class hubei extends abstractaction

public boolean ismyjob(string type)

}/**

* 介面卡模式 - 策略模式

* 定義江西類繼承抽象類

* created by yz on 2018/3/6.

*/public class jiangxi extends abstractaction

public boolean ismyjob(string type)

}/**

* 介面卡模式 - 策略模式

* 定義廣東類繼承抽象類

* created by yz on 2018/3/6.

*/public class guangdong extends abstractaction

public boolean ismyjob(string type)

}/**

* 介面卡模式 - 策略模式

* created by yz on 2018/3/6.

*/public class test

}*/map map = new hashmap();

map.put("湖南",hn);

map.put("湖北",hb);

map.put("江西",jx);

map.put("廣東",gd);

action action = (action) map.get("廣東");

action.todo();}}

4.觀察者模式(重點)

例如訂閱了乙個文章,如果文章發生改變,怎樣通知所有使用者?

有主題,有觀察者,一旦主題發生改變,那麼要及時的通知所有的觀察者

主題中需要擁有所有的觀察者,這樣才能操作所有的觀察者,這樣才能把訊息傳遞給所有的觀察者

/*** 介面卡模式 - 觀察者模式

* 定義主題介面,主題改變的時候就要通知觀察者

* created by yz on 2018/3/6.

*/public inte***ce subject

/*** 介面卡模式 - 觀察者模式

* 定義抽象類 可以定義很多抽象方法

* created by yz on 2018/3/6.

*/public abstract class absteractobserver implements subject

public void notifyallobserver()

for (observer o : oblist) }}

/*** 介面卡模式 - 觀察者模式

* 定義主題類

* created by yz on 2018/3/6.

*/public class mysubject extends absteractobserver

}/**

* 介面卡模式 - 觀察者模式

* 定義觀察者介面

* created by yz on 2018/3/6.

*/public inte***ce observer

/*** 介面卡模式 - 觀察者模式

* 定義觀察1 實現觀察者介面

* created by yz on 2018/3/6.

*/public class observer1 implements observer

}/**

* 介面卡模式 - 觀察者模式

* 定義觀察2 實現觀察者介面

* created by yz on 2018/3/6.

*/public class observer2 implements observer

}/**

* 介面卡模式 - 觀察者模式 測試類

* created by yz on 2018/3/6.

*/public class test

java設計模式之原型設計模式

原型設計模式 顧名思義,該模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 設計思路 第一步 建立乙個類prototypemode,實現cloneable介面 第二步 在prototypemode中定義shallowclone方法 淺複製物件實現 和deepclon...

java設計模式之裝飾設計模式

裝飾設計模式 裝飾設計模式就是給乙個物件增加一些新的功能,而且是動態的。要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項 設計思路 第一步 定義介面action,在介面中提供乙個方法work 第二步 定義被裝飾類child,實現介面action 第三步 定義裝飾類adult,實現...

《java設計模式》之工廠設計模式

工廠設計模式就是用於產生物件的。工廠設計模式就是用於產生物件的。class car class bmwextends car class bsjextends car public class demo1 public static car getinstance int num else publ...