工廠模式 實現創建者和調用者的分離 簡單工廠,工廠方法,抽象工廠模式。 面向對象的設計原則:OCP(開閉原則):軟體的設計應該對擴展開放,對修改關閉 DIP(依賴倒轉原則):應該針對介面編程,不應該針對實現編程。 簡單工廠: 例: //頂級介面 public interface Car extend ...
工廠模式
實現創建者和調用者的分離
簡單工廠,工廠方法,抽象工廠模式。
面向對象的設計原則:OCP(開閉原則):軟體的設計應該對擴展開放,對修改關閉
DIP(依賴倒轉原則):應該針對介面編程,不應該針對實現編程。
簡單工廠:
例:
//頂級介面
public interface Car extends Runnable{
}
//子介面
public class Audi implements Car{
@Override
public void run() {
System.out.println("奧迪再跑");
}
}
//子介面
public class Byd implements Car{
@Override
public void run() {
System.out.println("比亞迪再跑");
}
}
通過給不同的工廠傳不同類型的參數,返回不同的對象
public class CarFactory {
public Car getInstance(String type) {
if("奧迪".equals(type)) {
return new Audi();
}else if("比亞迪".equals(type)) {
return new Byd();
}else {
return null;
}
}
}
簡單工廠也稱之為靜態工廠,因為只能生成已知的對象;同時,簡單工廠違反了開閉原則。
工廠方法模式
聲明一個車輛工廠的介面
public interface CarFactory {
public Car getInstance();
}
讓產生不同的車輛的工廠實現抽象車輛工廠
生產奧迪的工廠
public class AudiFactory implements CarFactory{
@Override
public Car getInstance() {
return new Audi();
}
}
奧迪類
public class Audi implements Car{
@Override
public void run() {
System.out.println("奧迪再跑");
}
}
當需要生產奧迪車的時候創建一個奧迪車的工廠對象
工廠方法與靜態工廠相比較而言,不用違反開閉原則,在原有基礎上,增加實現類即可實現對應的功能。
簡單工廠和工廠方法比較
簡單工廠相對簡單,代碼複雜度相對簡單。但是設計上工廠方法更加滿足要求,但實際開發中簡單工廠比工廠方法更加實用。
抽象工廠
1.抽象產品介面:定義產品的介面,公共的暴露方法。便於實際的產品類實現。
2.具體的產品類:包含實際產品的類的邏輯處理:
3.抽象工廠介面:定義產生系列對象的介面
4.具體的工廠實現:實現抽象的介面工廠,返回具體的產品類的實現。
代碼略;
抽象工廠還是針對某一個產品族進行設計的。