抽象工厂模式简介
抽象工厂模式 :
Abstract Factory Pattern
是一种创建型模式
。
核心 :“族”的概念,一组具有相同风格或主题的对象,通过同一个工厂接口来创建这个产品族中的对象。
感觉 : 就是对工厂方法模式的一种扩展,由原来的创建一种产品对象,扩展为创建多种产品对象。
主要角色
抽象产品 :
对产品的抽象
,例如 : 手机接口、电脑接口
具体产品 :具体的某个产品
,例如 : 小米手机、华为手机、小米电脑、华为电脑
抽象工厂 :定义了一组方法,用于创建 产品的对象,就是一个接口
;例如 : 电子工厂
具体工厂 :实现了创建产品的方法,真正会创建对象的,就是接口的实现类
;例如 : 小米工厂
场景介绍
1、有一个手机接口、电脑接口;
2、具体的产品类 : 小米手机、华为手机、小米电脑、华为电脑;
3、有一个抽象工厂类接口 : 电子产品工厂,有两个方法 : 造手机方法、造电脑方法;
4、具体的工厂类 : 小米工厂,华为工厂。
UML 类图
案例代码
抽象产品接口
手机接口
public interface Phone {void call();
}
电脑接口
public interface Computer {void work();
}
具体产品类
小米手机
public class XiaomiPhone implements Phone{@Overridepublic void call() {System.out.println("小米手机打电话");}
}
华为手机
public class HuaweiPhone implements Phone{@Overridepublic void call() {System.out.println("华为手机打电话");}
}
小米电脑
public class XiaomiComputer implements Computer{@Overridepublic void work() {System.out.println("小米电脑办公");}
}
华为电脑
public class HuaweiComputer implements Computer{@Overridepublic void work() {System.out.println("华为电脑办公");}
}
抽象工厂接口
public interface TechnologyFactory {/*** 创建手机对象* @return*/Phone createPhone();/*** 创建电脑对象* @return*/Computer createComputer();}
具体工厂
小米工厂
public class XiaomiFactory implements TechnologyFactory{@Overridepublic Phone createPhone() {return new XiaomiPhone();}@Overridepublic Computer createComputer() {return new XiaomiComputer();}
}
华为工厂
public class HuaweiFactory implements TechnologyFactory{@Overridepublic Phone createPhone() {return new HuaweiPhone();}@Overridepublic Computer createComputer() {return new HuaweiComputer();}
}
测试类
public class TestAbstractFactory {public static void main(String[] args) {TechnologyFactory technologyFactory = null;// String brand = "huawei";String brand = "xiaomi";// 根据品牌选择工厂if ("huawei".equals(brand)) {technologyFactory = new HuaweiFactory();} else if ("xiaomi".equals(brand)) {technologyFactory = new XiaomiFactory();}else{System.out.println("暂不支持该品牌");}// 由工厂来创建手机和电脑Phone phone = technologyFactory.createPhone();phone.call();Computer computer = technologyFactory.createComputer();computer.work();}}