java 抽象工厂模式简单实例
抽象工廠模式:提供一個創(chuàng)建一系列的相關(guān)的或者依賴的對象的接口,無需指定它們的具體實現(xiàn)類,具體的時間分別在子類工廠中產(chǎn)生。
類似于工廠模式:隔離了具體類的生產(chǎn)實現(xiàn),使得替換具體的工廠實現(xiàn)類很容易。包含有以下模塊:
1.抽象產(chǎn)品接口:定義產(chǎn)品的接口,公共的暴露方法。便于實際的產(chǎn)品類實現(xiàn)。
2.具體的產(chǎn)品類:包含實際產(chǎn)品的類的邏輯處理:
3.抽象工廠接口:定義產(chǎn)生系列對象的接口
4.具體的工廠實現(xiàn):實現(xiàn)抽象的接口工廠,返回具體的產(chǎn)品類的實現(xiàn)。
下面是具體的代碼示例:
1.抽象的產(chǎn)品接口,定義了Car 和 IBreakFast
package factory.simple;/*** 抽象產(chǎn)品角色 交通工具接口* * @author lilin* */ public interface Car {/*** 上班函數(shù)*/void gotowork();}?
package factory.abstractfactory;/*** @author lilin* */ public interface IBreakFast {/*** 吃早餐*/void eat(); }2.定義具體的產(chǎn)品類的實現(xiàn):
package factory.simple;/*** 具體產(chǎn)品角色,自行車* * @author lilin* */ public class Bike implements Car {@Overridepublic void gotowork() {System.out.println("騎自行車去上班!");}}?
package factory.simple;/*** @author lilin* */ public class Bus implements Car {@Overridepublic void gotowork() {System.out.println("坐公交車去上班!");}}?
/*** */ package factory.abstractfactory;/*** @author lilin* */ public class Milk implements IBreakFast {@Overridepublic void eat() {System.out.println("喝牛奶!");}}?
/*** */ package factory.abstractfactory;/*** @author lilin* */ public class Orange implements IBreakFast {@Overridepublic void eat() {System.out.println("吃橘子!");}}3.定義好抽象的工廠接口,一系列的獲取實例的接口方法:
/*** */ package factory.abstractfactory;import factory.simple.Car;/*** @author lilin* */ public interface IAbstractFactory {/*** * @return*/Car getCar();/*** */IBreakFast getBreakFast();}4.定義具體的工廠生產(chǎn)類,具體的產(chǎn)品實例返回。
/*** */ package factory.abstractfactory;import factory.simple.Bike; import factory.simple.Car;/*** @author lilin* */ public class LowPersonFactory implements IAbstractFactory {@Overridepublic Car getCar() {return new Bike();}@Overridepublic IBreakFast getBreakFast() {return new Orange();}}?
/*** */ package factory.abstractfactory;import factory.simple.Bus; import factory.simple.Car;/*** @author lilin* */ public class HighPersonFactory implements IAbstractFactory {@Overridepublic Car getCar() {return new Bus();}@Overridepublic IBreakFast getBreakFast() {return new Milk();} }?
最后,通過testNG簡單測試下,抽象工廠模式的實現(xiàn):代碼如下:
/*** */ package factory.abstractfactory;import org.testng.annotations.Test;import factory.simple.Car;/*** @author lilin* */ public class AbstractFactoryTest {@Testpublic void test() {IAbstractFactory factory = new LowPersonFactory();Car car = factory.getCar();IBreakFast breakFast = factory.getBreakFast();System.out.println("吃的早飯是:");breakFast.eat();System.out.println("上班交通工具是:");car.gotowork();IAbstractFactory factory2 = new HighPersonFactory();car = factory2.getCar();breakFast = factory2.getBreakFast();System.out.println("吃的早飯是:");breakFast.eat();System.out.println("上班交通工具是:");car.gotowork();}}這樣使用過程城中,只要注入抽象的工廠接口,具體的產(chǎn)品的產(chǎn)生,會在實際的子類工廠類中產(chǎn)生,也可以隨意的添加和修改實際子類工廠類,而不需要改變既有的代碼設(shè)計。
抽象工廠方法:一般常常使用于一套程序,需要多套實現(xiàn)的場景之下。
?
轉(zhuǎn)載于:https://www.cnblogs.com/lilin0719/p/5313886.html
總結(jié)
以上是生活随笔為你收集整理的java 抽象工厂模式简单实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: AES 加密256位 错误 java.s
 - 下一篇: substring用法