編寫**原則:
開閉原則:對修改關閉、對擴充套件開發。(如利於**二次開發)
作用: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...