[Java]Design Patten

設計模式說到底就是各種接口編程和父類對象指向子類引用

代理(proxy)模式

爲什麼要使用代理模式:對一些類中的方法進行某些操作,比方說計算方法的運行時間等等
哪種代理方式更好,1.繼承方式 2.實現同一接口:2比1要好很多,更加靈活,例如計算時間的代理和記錄log的代理同時使用,可以任意順序調用,1的實現方式就要寫死在代理中,比較不方便
寫死代理類也會引起類太多的問題,所以靜態代理就被動態代理所取代,動態代理就相當於代理的總代理,由它生成具體的代理類,但是必須要傳入所要代理的類實現的接口interface和代理類要進行的處理handler
把要代理的類傳給handler,從而實現了對這個類進行了指定的代理

工廠(factory)模式

定義VehicleFactory接口,CarFactory和PlaneFactory實現這個接口,再定義一個Moveable接口,Car和Plane類實現這個接口,最後通過接口指向具體類實現來靈活改變
abstractFactory

聲明一個Factory類,在此基礎上繼承出各種具體的Factory,像是DefaultFactory,MagicFactory之類的,然後再定義Vehicle, Food和Weapon 抽象類,Car類和Plane類實現Vehicle類,Apple和MushRoom實現Food類,AK47和MagicStick實現Weapon類,然後通過父類指向具體子類來實現靈活編程

策略(stratery)模式

定義一個Comparator接口,有一個compare(Object o1, Object o2)方法,CatWeightComparator和CatHeightComparator實現這個接口,定義一個Comparable接口,有一個compareTo(Object o)方法,Cat和Dog類實現這個接口,並說明使用哪個Comparator的實現類,調用的時候直接放入實現了Comparable接口的對象數組進行比較

橋接(bridge)模式

先聲明一個Gift類和GiftImpl類,Gift類裏有一個GiftImpl的成員變量,然後GiftImpl有兩個子類Flower類和Ring類,Gift類有兩個子類WarmGift類和WildGift類,這樣就可以定義
Gift gift = new WarmGift(new Flower());
Gift gift2 = new WildGift(new Ring());
這就是橋接模式

命令(command)模式

一個Boy類,一個MM類,MM類裏有一個Order(Boy b)的方法,所以MM只要發出各種具體的Command的命令,別的都是Boy來執行,Boy類裏都是Command接口來實現具體的Command

可以參考這篇文章:http://www.cnblogs.com/sjms/archive/2010/07/09/1774069.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章