JAVA 23種設計模式---工廠模式(簡單工廠模式)
寫在前面的話:
java常用的設計模式有23種,設計模式就是為了重用程式碼、解耦、讓程式碼更容易讓他人理解、保證程式碼可靠性
設計模式遵循的原則有6個:
1、開閉原則(Open Close Principle)
對擴充套件開放,對修改關閉。
2、里氏代換原則(Liskov Substitution Principle)
只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行為。
3、依賴倒轉原則(Dependence Inversion Principle)
這個是開閉原則的基礎,對介面程式設計
4、介面隔離原則(Interface Segregation Principle)
使用多個隔離的藉口來降低耦合度。
5、迪米特法則(最少知道原則)(Demeter Principle)
一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模組相對獨立。
6、合成複用原則(Composite Reuse Principle)
原則是儘量使用合成/聚合的方式,而不是使用繼承。繼承實際上破壞了類的封裝性,超類的方法可能會被子類修改
下面分享工廠模式(程式碼):
專案說明:
奧迪類:
public class AodiTrunk implements Trunk{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("奧迪汽車啟動!");
}
}
寶馬類:
public class BwmTrunk implements Trunk{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("寶馬卡車啟動!");
}
}
介面類:
public interface Trunk {
public void run();
}
顧客類:
public class Customer {
public static void main(String[] args) {
/**
* 顧客只需要說明購買的車型即可,不必要知道車是怎麼造出來的
*/
//TrunkFactory.produceTrunk("寶馬").run();
//TrunkFactory.produceTrunk("奧迪").run();
TrunkFactory.produceTrunk("大眾").run();
}
}
工廠類:
public class TrunkFactory {
/**
* statis為靜態 可以不用通過建立物件直接呼叫
* @param message
* @return
*/
public static Trunk produceTrunk(String message){
//第一種方法
if(message.equals("寶馬")){
return new BwmTrunk();
}else if(message.equals("奧迪")){
return new AodiTrunk();
}else{
throw new RuntimeException("沒有您要的車型,有可能在火星上");
}
//第二種方法
/*switch(message){
case "寶馬":
return new BwmTrunk();
case "奧迪":
return new AodiTrunk();
default :
throw new RuntimeException("沒有您要的車型,有可能在火星上");//自定義異常
}*/
}
}
執行結果: