日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java常用设计模式————抽象工厂模式

發布時間:2025/3/12 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常用设计模式————抽象工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

每一個具體工廠類只負責創建抽象產品的某一個具體子類的實例。

與工廠方法模式的區別

工廠方法模式針對的是一個產品等級結構,而抽象工廠模式針對的是多個產品等級結構,因此抽象工廠模式在結構上要比工廠方法模式更加復雜和抽象,也更具一般性。

代碼實現

第一步:創建產品族接口

package design.pattern.abstractfactory;public interface Shape {void draw(); } package design.pattern.abstractfactory;public interface Color {void fill(); }

第二步:創建產品類

package design.pattern.abstractfactory; /*** 矩形類* <br>類名:Rectangle<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:02:26<br>*/ public class Rectangle implements Shape{@Overridepublic void draw() {System.out.println("Rectangle drawing...");} } package design.pattern.abstractfactory; /*** 正方形類* <br>類名:Square<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:03:13<br>*/ public class Square implements Shape{@Overridepublic void draw() {System.out.println("Square drawing...");} } package design.pattern.abstractfactory; /*** 圓形類* <br>類名:Circle<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:03:43<br>*/ public class Circle implements Shape{@Overridepublic void draw() {System.out.println("Circle drawing...");} } package design.pattern.abstractfactory; /*** 紅色類* <br>類名:Red<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:04:23<br>*/ public class Red implements Color{@Overridepublic void fill() {System.out.println("Red filling....");} } package design.pattern.abstractfactory; /*** 綠色類* <br>類名:Green<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:05:08<br>*/ public class Green implements Color{@Overridepublic void fill() {System.out.println("Green filling...");} } package design.pattern.abstractfactory; /*** 藍色類* <br>類名:Blue<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:05:30<br>*/ public class Blue implements Color{@Overridepublic void fill() {System.out.println("Blue filling...");} }

第三步:創建工廠族接口

package design.pattern.abstractfactory; /*** 工廠族接口* <br>類名:Factory<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:05:53<br>*/ public interface Factory {Object getPruduct(Class c); }

第四步:創建工廠類

package design.pattern.abstractfactory; /*** 形狀工廠類* <br>類名:ShapeFactory<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:06:55<br>*/ public class ShapeFactory implements Factory{@Overridepublic Shape getPruduct(Class c) {if(c == null) return null;try {Shape shape = (Shape) c.newInstance();return shape;} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return null;} } package design.pattern.abstractfactory; /*** 顏色工廠類* <br>類名:ColorFactory<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:07:29<br>*/ public class ColorFactory implements Factory{@Overridepublic Color getPruduct(Class c) {if(c == null) return null;try {Color color = (Color) c.newInstance();return color;} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return null;} }

第五步:創建工廠生成類

package design.pattern.abstractfactory; /*** 工廠生成類* <br>類名:FactoryProducer<br>* 作者: mht<br>* 日期: 2018年3月21日-下午9:08:08<br>*/ public class FactoryProducer {public static Factory getFactory(Class c){if(c == null) return null;try {Factory f = (Factory) c.newInstance();return f;} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} return null;} }

以上五步已經實現了抽象工廠模式,現在來測試一下:

package design.pattern.abstractfactory;public class testDemo {public static void main(String[] args) {// 創建形狀工廠Factory shapeFactory = FactoryProducer.getFactory(ShapeFactory.class);// 創建形狀產品Shape rect = (Shape) shapeFactory.getPruduct(Rectangle.class);Shape square = (Shape) shapeFactory.getPruduct(Square.class);Shape circle = (Shape) shapeFactory.getPruduct(Circle.class);// 使用產品rect.draw();square.draw();circle.draw();Factory colorFactory = FactoryProducer.getFactory(ColorFactory.class);Color red = (Color) colorFactory.getPruduct(Red.class);Color green = (Color) colorFactory.getPruduct(Green.class);Color blue = (Color) colorFactory.getPruduct(Blue.class);red.fill();green.fill();blue.fill();} }

運行,輸出結果:

Rectangle drawing... Square drawing... Circle drawing... Red filling.... Green filling... Blue filling...

結構圖:

?

總結

以上是生活随笔為你收集整理的Java常用设计模式————抽象工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。