標籤:code 重寫 pack 抽象 備忘錄模式 src 抽象原廠模式 拷貝 慢慢
一直不是很瞭解設計模式,也不知道如何使用。現在慢慢一點一點瞭解。
建立型模式:Factory 方法模式、抽象原廠模式、單例模式、建造者模式、原型模式結構型模式:適配器模式、裝飾者模式、代理模式、面板模式、橋接模式、組合模式、享元模式行為型模式:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解譯器模式還有兩類:併發型模式和線程池模式。
策略模式:不同行為,相同介面,環境決定使用那種行為
策略模式:男生追女生,結果是一樣的,大部分都追到了,但是追的策略不一樣,怎麼樣才能追到女生呢?那就要有好的策略。
原型模式:複製,相同資料,不同對象
孫悟空有個特殊的技能,就是拔跟猴毛就可以變出一個孫悟空,這個孫悟空和真的孫悟空是長的一模一樣,但是他們是不同的對象。
應用情境:主要是用來拷貝複雜的資料結構對象的資料
職責鏈模式
使多個對象都有機會處理請求,從而避免請求的寄件者和接受者之間的耦合關係,
將這個對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理他為止。
角色
抽象處理者角色(Handler):定義出一個處理請求的介面。如果需要,介面可以定義 出一個方法以設定和返回對下家的引用。這個角色通常由一個Java抽象類別或者Java介面實現。
具體處理者角色(ConcreteHandler):具體處理者接到請求後,可以選擇將請求處理掉,或者將請求傳給下家。由於具體處理者持有對下家的引用,因此,如果需要,具體處理者可以訪問下家。
應用執行個體:過濾器鏈和攔截器鏈。
模板模式:固定流程
package template;//沖飲料(拿出去賣錢了)public abstract class Bevegrage {//不能被重寫public final void create(){//1、把水燒開boilWater();//2、把杯子準備好、原材料放到杯中pourInCup();//3、用水沖泡brew();//4、添加輔料addCoundiments();}public abstract void pourInCup();public abstract void addCoundiments();public void brew(){System.out.println("將開水放入杯中進行沖泡");};public void boilWater(){System.out.println("燒開水,燒到100度可以起鍋了");}}
不同的實作類別實現pourInCup和addCoundiments方法。
觀察者模式:
觀察者模式的應用情境: <1>.對一個對象狀態的更新需要其他對象同步更新;,或者一個對象的更新需要依賴另一個對象的更新;<2>.對象僅需要將自己的更新通知給其他對象而不需要知道其他對象的細節,如訊息推送。
實際應用案例:觀察者模式還可以用於網路中的用戶端和伺服器,比如手機中的各種App的訊息推送,服務端是觀察者,各個手機App是被觀察者,一旦伺服器上的資料(如App升級資訊)有更新,就會被推送到手機用戶端。
類圖:
java設計模式