抽象工厂类
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className AbstractFactory* @description 抽象工厂模式* @date 2022/2/24**/public abstract class AbstractFactory {/*** 创建手机* @return 手机抽象类*/abstract AbstractPhoneProduct createPhone();/*** 创建智能手表* @return 手表抽象类*/abstract AbstractWatchProduct createSmartWatch();}
具体工厂类
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className AppleFactory* @description* @date 2022/2/24**/public class AppleFactory extends AbstractFactory {@OverrideAbstractPhoneProduct createPhone() {return new ApplePhone();}@OverrideAbstractWatchProduct createSmartWatch() {return new AppleWatch();}}
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className AppleFactory* @description* @date 2022/2/24**/public class HuaWeiFactory extends AbstractFactory {@OverrideAbstractPhoneProduct createPhone() {return new HuaWeiPhone();}@OverrideAbstractWatchProduct createSmartWatch() {return new HuaWeiWatch();}}
抽象产品类
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className AbstractProduct* @description 手机抽象类* @date 2022/2/24**/public abstract class AbstractPhoneProduct {/*** 打开手机*/abstract void open();/*** 关闭手机*/abstract void close();/*** 打电话*/abstract void call();}
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className AbstractProduct* @description 手表抽象类* @date 2022/2/24**/public abstract class AbstractWatchProduct {/*** 打开手表*/abstract void open();/*** 关闭手表*/abstract void close();/*** 查看手表*/abstract void look();}
具体产品类
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className ApplePhone* @description* @date 2022/2/24**/public class ApplePhone extends AbstractPhoneProduct {@Overridevoid open() {System.out.println("打开苹果手机");}@Overridevoid close() {System.out.println("关闭苹果手机");}@Overridevoid call() {System.out.println("苹果手机打电话");}}
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className HuaWeiWatch* @description* @date 2022/2/24**/public class AppleWatch extends AbstractWatchProduct {@Overridevoid open() {System.out.println("打开苹果手表");}@Overridevoid close() {System.out.println("关闭苹果手表");}@Overridevoid look() {System.out.println("查看苹果手表信息");}}
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className ApplePhone* @description* @date 2022/2/24**/public class HuaWeiPhone extends AbstractPhoneProduct {@Overridevoid open() {System.out.println("打开华为手机");}@Overridevoid close() {System.out.println("关闭华为手机");}@Overridevoid call() {System.out.println("华为手机打电话");}}
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className HuaWeiWatch* @description* @date 2022/2/24**/public class HuaWeiWatch extends AbstractWatchProduct {@Overridevoid open() {System.out.println("打开华为手表");}@Overridevoid close() {System.out.println("关闭华为手表");}@Overridevoid look() {System.out.println("查看华为手表信息");}}
测试
package miluo.design.patterns.abstractFactory;/*** @author Miluo* @className TestAbstractFactory* @description* @date 2022/2/24**/public class TestAbstractFactory {public static void main(String[] args) {AppleFactory appleFactory = new AppleFactory();AbstractPhoneProduct applePhone = appleFactory.createPhone();applePhone.open();applePhone.call();applePhone.close();HuaWeiFactory huaWeiFactory = new HuaWeiFactory();AbstractWatchProduct huaWeiWatch = huaWeiFactory.createSmartWatch();huaWeiWatch.open();huaWeiWatch.look();huaWeiWatch.close();}}****************************************Connected to the target VM, address: '127.0.0.1:7888', transport: 'socket'打开苹果手机苹果手机打电话关闭苹果手机打开华为手表查看华为手表信息关闭华为手表Disconnected from the target VM, address: '127.0.0.1:7888', transport: 'socket'****************************************
