日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式:常见模式案例

發布時間:2025/6/15 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式:常见模式案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

1.觀察者模式

package 觀察者模式.實現1;import 觀察者模式.實現2.ConcreteObserver; import 觀察者模式.實現2.Observer;public class ConcreteSubject extends Subject {private String state;public void change(String newState){state=newState;this.notifyObserver();}} class test{private static ConcreteSubject subject;private static Observer observer;public static void main(String[] args) {//創建觀察者對象subject=new ConcreteSubject();//創建主題對象observer=new ConcreteObserver();//觀察者對象登記到主題對象上subject.attach(observer);//改變主題對象的狀態subject.change("new State");} }package 觀察者模式.實現1;import java.util.Enumeration; import java.util.Vector;import 觀察者模式.實現2.Observer;public abstract class Subject {private Vector observersVector=new Vector(); public void attach(Observer o) {observersVector.addElement(o);}public void detach(Observer o) {observersVector.removeElement(o);}public void notifyObserver() {Enumeration enumeration=observers();while(enumeration.hasMoreElements()){((Observer)enumeration.nextElement()).update();}}public Enumeration observers(){return ((Vector)observersVector.clone()).elements();}/*方案2:主題對象的功能必須由一個java聚集來維護一個對所有的觀察者對象的引用* 管理這個聚集的方法是由抽象主題角色來聲明并具體主題角色來實現導致了具體主題角色* 到抽象觀察者角色的連線* 問題:聚集的管理方法在每一個具體角色上都不同嗎?* 聚集管理方法本身是所有具體主題角色所共有的,因而這些聚集管理方法本身就是所有具體主題角色所共有的,因而* 這些方法以及聚集本身都可以移到抽象主題角色上去,notifyObserver()依賴聚集對象也可以用的移到抽象* 主題角色上去--方案1* * 區別:代表存儲觀察者對象的聚集連線是從抽象主題到抽象觀察者** */ }package 觀察者模式.實現2;public class ConcreteObserver implements Observer{/*具體主題對象可以動態的維護一系列的對觀察者對象的引用,并在需要的時候調用每一個觀察者共有的方法:* 從具體的主題角色指向觀察者角色的合成關系,代表具體主題可以有任意多個對抽象觀察者的引用。* */public void update() {System.out.println("我正在......");}}package 觀察者模式.實現2;import java.util.Enumeration; import java.util.Vector;public class ConcreteSubject implements Subject{private Vector observersVector=new Vector(); //聚集public void attach(Observer o) {observersVector.addElement(o);}public void detach(Observer o) {observersVector.removeElement(o);}public void notifyObserver() {Enumeration enumeration=observers();while(enumeration.hasMoreElements()){((Observer)enumeration.nextElement()).update();}}public Enumeration observers(){return ((Vector)observersVector.clone()).elements();}}package 觀察者模式.實現2; /*內涵:定義了一種一對多的依賴關系,讓多個觀察者同時監聽某一主題對象,當這個主題對象發生變化時會通知* 所有的觀察者對象,使他們能自動更新自己* --某個對象發生改變時其他對象能做出相應的改變* */ public interface Observer {/*角色:* 抽象主題(subject)角色:將所有觀察者對象的引用保存在一個聚集(如:vector),每個主題都可以有* 任意數量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者對象(抽象被觀察者角色)* 抽象觀察者角色:為所有具體的觀察者定義一個接口,在得到主題更新時通知自己;這個接口叫更新接口,抽象* 觀察者角色一般用一個抽象類或接口實現* 具體主題角色:將有關狀態存入具體觀察者對象;在具體主題內部改變時;給所有觀察者發出通知;具體主題角色* 又叫具體被觀察者角色。具體主題角色實現對觀察者引用聚集的管理方法* 具體觀察者角色:存儲與主題狀態自恰的狀態。具體觀察者角色實現抽象觀察者角色所要求的更新接口,以便使* 本身狀態與主題的狀態相協調。如果需要具體觀察者可以保存一個指向具體主題對象的引用* */void update();}package 觀察者模式.實現2;public interface Subject {//登記一個新的觀察者對象public void attach(Observer o);//刪除一個已經登記過的觀察者對象public void detach(Observer o);//通知所有登記過的觀察者對象void notifyObserver();}

2.門面模式

package 門面模式;public class Alarm {public void activate(){System.out.println("啟動警報器");}public void deactivate(){System.out.println("關閉警報器");}public void runing(){System.out.println("拉響警報器");}public void stopRing(){System.out.println("停掉警報器");}}package 門面模式;public class Camera {public void turnOn(){System.out.println("打開錄像機");}public void turnOff(){System.out.println("關閉錄像機");}public void rotate(int degrees){System.out.println("轉動錄像機"+degrees+"");}} package 門面模式;public class Light {public void turnOn(){System.out.println("開燈");}public void turnoff(){System.out.println("關燈");}public void changeBulb(){System.out.println("換燈泡啦......");}}package 門面模式; /*門面角色:此角色知道相關(一個或多個)子系統的功能和責任,在正常的情況下,本角色會將所有的請求委派到相應的子系統* 子系統角色:可以同時擁有一個或多個子系統,每個子系統都是一個類的集合,都可以被客戶端或門面調用,對子系統而言門面* 只是另一個客戶端而已* */ public class SecurityFacade {//門面類/*內涵:* 為一個復雜的子系統提供一個簡單的接口:可以提高代碼的復用性* 子系統的獨立性* 層次化結構:簡化了層與層之間的依賴關系* */private Camera camera1,camera2;private Light light1,light2,light3;private Sensor sensor;private Alarm alarm;public void trunOn(){camera1.turnOn();camera2.turnOn();light1.turnOn();light2.turnOn();light3.turnOn();sensor.activate();alarm.activate();}public void deavtivate(){camera1.turnOff();camera2.turnOff();light1.turnoff();light2.turnoff();light3.turnoff();sensor.deactivate();alarm.deactivate();}} package 門面模式;public class Sensor {public void activate(){System.out.println("啟動感應器");}public void deactivate(){System.out.println("關閉感應器");}public void trigger(){System.out.println("觸發感應器");}}

3.橋梁模式

package 橋梁模式; /*橋梁模式有助于理解"開閉原則","合成/聚合原則"*橋梁模式的用意是將抽象化與實現化脫耦,使他們可以獨立的變化*1.抽象化:存在于多個實體之間的共同的概念性聯系* 在過程上,抽象化就是忽略一些信息,把不同實體當做相同實體看待 例:共同類、抽象類、繼承關系*2.實現化:抽象化給出的具體實現*3.脫耦:將兩個實體行為的某種關聯,而將他們的強關聯去掉。* 強關聯:編譯期已經確定,無法再運行時動態改變的關聯* 弱關系:可以在運行期動態確定并且動態改變的關聯* 例:繼承關系是強關聯,聚合關系是弱關聯* */ public abstract class Abstraction {//抽象化角色/*角色:* 抽象化角色:抽象化給出定義,并保存一個對實現化對象的引用* 修正抽象化角色:擴展抽象化角色,改變和修正父類對抽象化的定義* 實現化角色:給出實現化的接口,但不給出具體的實現;這個接口不一定與抽象化接口相同。實現化角色應該給出* 底層操作,而抽象化角色應該給出更高一層的操作* 具體實現化角色:給出實現化接口的具體實現* */protected Implementor imp;public void operation(){imp.operationImp();//抽象化角色可以向不同實現化對象委派,來達到動態轉換自己功能的目的//抽象化角色的接口比實現化角色的接口更寬,抽象化角色除了提供與實現化角色相關的方法之外//還有可能提供其他商業方法,而實現化角色則往往為實現抽象化角色的相關行為而存在}}package 橋梁模式; //具體實現化角色 public class ConcreteImplementor extends Implementor{@Overridepublic void operationImp() {System.out.println("Do something......");}}package 橋梁模式; //實現化角色 public abstract class Implementor {public abstract void operationImp();}package 橋梁模式; //修正抽象化角色 public class RefindAbstraction extends Abstraction{@Overridepublic void operation() {// TODO Auto-generated method stubsuper.operation();}}

4.裝飾模式

package 裝飾模式; /*抽象構件角色* */ public interface Compent {/*抽象構件:給出一個抽象接口,以規范準備接收附加責任的對象* 具體構件:定義一個將要接收附加責任附件的類* 裝飾角色:持有一個構件對象的實例,并定義一個與抽象構件接口一致的接口* 具體裝飾角色:負責給構件對象貼上附加責任* */void sampleOperation();/*裝飾模式的使用:* 需要擴展一個類的功能,或者給一個類增加附加功能* 需要動態的給一個對象增加功能,這些功能可以動態的撤銷* 需要增加一些基本功能的排列組合而產生非常大的功能,從而使繼承關系變得不現實* */}package 裝飾模式; //具體構件類 public class ConcreteCompent implements Compent {public void sampleOperation() {// TODO Auto-generated method stub}}package 裝飾模式; //具體裝飾類 public class ConcreteDecroator extends Decrorator{public ConcreteDecroator() {super();// TODO Auto-generated constructor stub}public ConcreteDecroator(Compent com) {super(com);// TODO Auto-generated constructor stub}@Overridepublic void sampleOperation() {// TODO Auto-generated method stubsuper.sampleOperation();}}class test{public static void main(String[] args) {Compent com=new ConcreteCompent();//創建一個真實的對象Compent dec=new ConcreteDecroator(com);//裝飾的變化--所有的變化都是由真實對象操作} }package 裝飾模式; //裝飾角色 public class Decrorator implements Compent {/*內涵:Decrorator本身不是一個抽象類,在實際應用中也不一定是抽象類,但是他的功能是一個抽象的角色,因而* 稱為抽象裝飾 例 大圣的72般變化* */private Compent compent;public Decrorator(Compent com){this.compent=com;}public Decrorator(){}public void sampleOperation() {compent.sampleOperation();}}

?

轉載于:https://my.oschina.net/wii01/blog/983739

總結

以上是生活随笔為你收集整理的设计模式:常见模式案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕一区二区三区人妻四季 | 中文字幕人妻精品一区 | 日韩乱码人妻无码中文字幕 | 一级日韩一级欧美 | 一区二区三区在线免费观看 | 婷婷人体 | 国产 欧美 日韩 一区 | 欧美揉bbbbb揉bbbbb | 亚洲国产97 | 亚洲欧洲免费视频 | 公车激情云雨小说 | 国产精品久久久免费观看 | 香港av在线 | www.国产免费 | 国久久| videos另类灌满极品另类 | 欧美成人一区二区在线 | 亚洲视频免费 | 亚洲在线免费看 | 欧洲一区二区三区在线 | 好吊色在线观看 | 久久综合影院 | 人妻 丝袜美腿 中文字幕 | 黑人黄色片 | 欧美一区二区三区激情视频 | 欧美日韩精品在线 | 国精产品一区一区三区在线 | 成人www视频 | 综合色吧| 欧美另类综合 | 深夜av| av中文在线天堂 | 亚洲顶级毛片 | 亚洲制服丝袜诱惑 | 五月婷婷爱爱 | 男人的天堂97 | 国产一级在线视频 | 毛片一级免费 | 天堂在线中文在线 | 人妻换人妻仑乱 | 国产一二三在线 | 国产一级片在线播放 | 欧美成人免费看 | 尤物在线观看 | 欧美性猛交xxxx乱大交3 | 日本久久成人 | 在线观看你懂得 | 精品久久久久久无码中文野结衣 | 成人免费视频一区二区三区 | 狠狠鲁影院 | 色黄啪啪网 | 伊人激情综合网 | 亚洲一级在线观看 | 国产区小视频 | 国产一区二区三区四区视频 | 玖玖综合网 | 精品麻豆 | 国产精品视频无码 | 天天摸夜夜 | 欧美精品二区三区四区免费看视频 | 国产偷v国产偷v亚洲高清 | chinese国产精品 | 婷婷久草| 久久一二区 | 你懂的网站在线观看 | 99在线看| 亚洲免费视频网站 | 秋霞av网 | 强行糟蹋人妻hd中文 | 波多野结衣理论片 | 国产在线v | 人妻无码一区二区三区四区 | 神宫寺奈绪一区二区三区 | 日本美女视频 | 欧美色图自拍 | 中文字幕乱妇无码av在线 | 一级欧美日韩 | 男生女生羞羞网站 | 日韩成人精品一区二区三区 | 尤物精品视频在线观看 | 欧美大片免费在线观看 | 国产美女喷水 | 国产亚洲精品一区二区三区 | 中文字幕国产一区二区 | 欧美一级片网站 | 中文字幕色网 | аⅴ资源天堂资源库在线 | 麻豆91精品91久久久 | www.97ai.com| 男人插入女人下面的视频 | 日本女人一区二区三区 | 久久精品久久久久久久 | 色人天堂 | 色综合久久久久综合体桃花网 | 香蕉狠狠爱视频 | 日本在线不卡一区二区三区 | 怡春院在线视频 | 性欧美在线观看 | 午夜久草|