您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

03 java訂閱發布者模式(java 設計模式之 觀察者模式(Observer))

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-30 11:47:47【】3人已围观

简介的類一樣。狀態模式把所研究的對象的行為包裝在不同的狀態對象里,每一個狀態對象都屬于一個抽象狀態類的一個子類。狀態模式的意圖是讓一個對象在其內部狀態改變的時候,其行為也隨之改變。狀態模式需要對每一個系統

的類一樣。狀態模式把所研究的對象的行為包裝在不同的狀態對象里,每一個狀態對象都屬于一個抽象狀態類的一個子類。狀態模式的意圖是讓一個對象在其內部狀態改變的時候,其行為也隨之改變。狀態模式需要對每一個系統可能取得的狀態創立一個狀態類的子類。當系統的狀態變化時,系統便改變所選的子類。

21、STRATEGY—跟不同類型的MM約會,要用不同的策略,有的請電影比較好,有的則去吃小吃效果不錯,有的去海邊浪漫最合適,單目的都是為了得到MM的芳心,我的追MM錦囊中有好多Strategy哦。

策略模式:策略模式針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。策略模式把行為和環境分開。環境類負責維持和查詢行為類,各種算法在具體的策略類中提供。由于算法和環境獨立開來,算法的增減,修改都不會影響到環境和客戶端。

22、TEMPLATE METHOD——看過《如何說服女生上床》這部經典文章嗎?女生從認識到上床的不變的步驟分為巧遇、打破僵局、展開追求、接吻、前戲、動手、愛撫、進去八大步驟(Template method),但每個步驟針對不同的情況,都有不一樣的做法,這就要看你隨機應變啦(具體實現);

模板方法模式:模板方法模式準備一個抽象類,將部分邏輯以具體方法以及具體構造子的形式實現,然后聲明一些抽象方法來迫使子類實現剩余的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩余的邏輯有不同的實現。先制定一個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。

23、VISITOR—情人節到了,要給每個MM送一束鮮花和一張卡片,可是每個MM送的花都要針對她個人的特點,每張卡片也要根據個人的特點來挑,我一個人哪搞得清楚,還是找花店老板和禮品店老板做一下Visitor,讓花店老板根據MM的特點選一束花,讓禮品店老板也根據每個人特點選一張卡,這樣就輕松多了;

訪問者模式:訪問者模式的目的是封裝一些施加于某種數據結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的數據結構可以保持不變。訪問者模式適用于數據結構相對未定的系統,它把數據結構和作用于結構上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化。訪問者模式使得增加新的操作變的很容易,就是增加一個新的訪問者類。訪問者模式將有關的行為集中到一個訪問者對象中,而不是分散到一個個的節點類中。當使用訪問者模式時,要將盡可能多的對象瀏覽邏輯放在訪問者類中,而不是放到它的子類中。訪問者模式可以跨過幾個類的等級結構訪問屬于不同的等級結構的成員類。

設計模式-快餐簡解-【觀察者模式】

【 觀察者模式應用場景舉例 】

比如在玩 極品飛車 這款游戲 每一個車手到達終點的時候 都會在其它車手的屏幕上顯示 某某人以多少時間到達終點的提示 其實這就是一個典型的觀察者模式的應用 觀察者模式即是典型的雙向一對多的應用場景下用一的一端來通知多的一端

【 觀察者 模式解釋】

類型 行為模式

定義了一種一對多的依賴關系 讓多個觀察者對象同時監聽某一個主題對象 這個主題對象的狀態發生改變時 會通知所有的觀察者對象 使它們能夠自己更新自己

【 觀察者 模式UML圖】

【 觀察者 模式 JAVA代碼實現】

新建抽象發布通知父類

package carer_subject;import java util ArrayList;import java util List;import carer_observer carer_observer;public interface carer_subject_parent {     public void set_state(String state_string);    public String get_state();    public void add_observer(carer_observer carer_observer_ref);    public void sub_observer(carer_observer carer_observer_ref);    public void notityAllCarer();}

新建發布通知實現類

package carer_subject;import java util ArrayList;import java util List;import carer_observer carer_observer;public class carer_subject_sub implements carer_subject_parent {     List<carer_observer> list_observer = new ArrayList<carer_observer>();    private String state;    public void set_state(String state_string) {         this state = state_string;    }    public String get_state() {         return state;    }    public void add_observer(carer_observer carer_observer_ref) {         list_observer add(carer_observer_ref);    }    public void sub_observer(carer_observer carer_observer_ref) {         list_observer remove(carer_observer_ref);    }    public void notityAllCarer() {         state =  到達終點 ;        for (int i =  ; i < list_observer size(); i++) {             list_observer get(i) show_info();        }    }}

新建觀察者接口

package carer_observer;import carer_subject carer_subject_parent;public interface carer_observer {     public void show_info();}

新建觀察者實現類

package carer_observer;import carer_subject carer_subject_parent;public class carer_observer_imple implements carer_observer {     private carer_subject_parent carer_subject_parent_ref;    public carer_subject_parent getCarer_subject_parent_ref() {         return carer_subject_parent_ref;    }    public void setCarer_subject_parent_ref(            carer_subject_parent carer_subject_parent_ref) {         this carer_subject_parent_ref = carer_subject_parent_ref;    }    public carer_observer

很赞哦!(8)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:广西崇左宁明县

工作室:小组

Email:[email protected]