java 抽象工厂 类图_Java设计模式——抽象工厂模式
抽象工廠模式(Abstract Factory Pattern)是屬于創建型的設計模式,意在創造一個抽象的工廠,而后再由實例化出的具體的工廠來進行生產。
何時使用:系統的產品有多于一個的產品族,而系統只消費其中某一族的產品。
應用實例:工作了,為了參加一些聚會,肯定有兩套或多套衣服吧,比如說有商務裝(成套,一系列具體產品)、時尚裝(成套,一系列具體產品),甚至對于一個家庭來說,可能有商務女裝、商務男裝、時尚女裝、時尚男裝,這些也都是成套的,即一系列具體產品。假設一種情況(現實中是不存在的,要不然,沒法進入共產主義了,但有利于說明抽象工廠模式),在您的家中,某一個衣柜(具體工廠)只能存放某一種這樣的衣服(成套,一系列具體產品),每次拿這種成套的衣服時也自然要從這個衣柜中取出了。用 OO 的思想去理解,所有的衣柜(具體工廠)都是衣柜類的(抽象工廠)某一個,而每一件成套的衣服又包括具體的上衣(某一具體產品),褲子(某一具體產品),這些具體的上衣其實也都是上衣(抽象產品),具體的褲子也都是褲子(另一個抽象產品)。
優點:當一個產品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的對象。
缺點:產品族擴展非常困難,要增加一個系列的某一產品,既要在抽象的 Creator 里加代碼,又要在具體的里面加代碼。
使用場景:?1、QQ 換皮膚,一整套一起換。 2、生成不同操作系統的程序。
注意事項:產品族難擴展,產品等級易擴展。
代碼舉例:
一、類圖:
二、代碼:
1.創建顏色系產品接口
public interfacecolor {public voiddraw();
}
2.創建顏色系具體產品
public class Red implementscolor {
@Overridepublic voiddraw() {
System.out.println("是紅色的");
}
}
public class Blue implementscolor {
@Overridepublic voiddraw() {
System.out.println("是藍色的");
}
}
3.創建形狀系產品接口
public interfaceShape {public voiddraw();
}
4.創建形狀系具體產品
public class Rantage implementsShape {
@Overridepublic voiddraw() {
System.out.println("圖案是矩形");
}
}
public class Circle implementsShape {
@Overridepublic voiddraw() {
System.out.println("圖案是圓形");
}
}
5.創建抽象工廠,用以為具體工廠向上轉型
public abstract classAbstractFactory {public abstractShape getShape(String shaptype);public abstractcolor getColor(String colortype);
}
6.創建具體的顏色工廠和形狀工廠,都繼承自抽象工廠
public class Color_Factory extendsAbstractFactory {
@OverridepublicShape getShape(String shaptype) {return null;
}
@Overridepubliccolor getColor(String colortype) {if (colortype == null) {return null;
}if(colortype.equalsIgnoreCase("Red")){return newRed();
}if(colortype.equalsIgnoreCase("Blue")){return newBlue();
}return null;
}
}
public class Shape_Factory extendsAbstractFactory {
@OverridepublicShape getShape(String shaptype) {if(shaptype == null){return null;
}if(shaptype.equalsIgnoreCase("Circle")){return newCircle();
}if(shaptype.equalsIgnoreCase("Rantage")){return newRantage();
}return null;
}
@Overridepubliccolor getColor(String colortype) {return null;
}
}
7.創建工廠制造者,用以生成具體的工廠
public classFactoryProducer {publicAbstractFactory getFactory(String factoryType){if(factoryType == null){return null;
}if (factoryType.equalsIgnoreCase("color_factory")) {return newColor_Factory();
}if (factoryType.equalsIgnoreCase("shape_factory")) {return newShape_Factory();
}return null;
}
}
8.用戶
public classUser {public static voidmain(String[] args) {
FactoryProducer factoryProducer= newFactoryProducer();
factoryProducer.getFactory("color_factory").getColor("Red").draw();
factoryProducer.getFactory("shape_factory").getShape("circle").draw();
}
}
總結
以上是生活随笔為你收集整理的java 抽象工厂 类图_Java设计模式——抽象工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码高亮截图神器
- 下一篇: 什么叫方法签名 Java