属于创建型模式 (共5种)
目的:灵活的扩展一系列产品族系;例如:现代人吃穿用、古代人吃穿用、外星人吃穿用
整体结构:
抽象的工厂类 抽象方法 返回抽象的产品类;例如(吃穿用类) 创建吃穿用 抽象产品类
抽象的产品类 有待实现的抽象方法;例如(吃穿用抽象方法)
具体的产品类 继承 对应的抽象产品类 实现具体抽象方法
具体的工厂类 继承 抽象的工厂类 实现抽象方法 返回具体的产品类
优点:
方便族系的扩展 (添加一个系列方便)例如:软件换皮肤
类图:
具体工厂返回 具体的产品类
//抽象工厂类 方法返回抽象产品 一个族系的特征public abstract class AbastractFactory {abstract Food createFood();abstract Vehicle createVehicle();abstract Weapon createWeapon();}//抽象产品类 抽取共同方法public abstract class Vehicle { //interfaceabstract void go();}//具体产品 实现抽象方法 具体如何做public class Car extends Vehicle{public void go() {System.out.println("Car go wuwuwuwuw....");}}//具体工厂类 实现抽象工厂 返回具体的产品族系public class ModernFactory extends AbastractFactory {@OverrideFood createFood() {return new Bread();}@OverrideVehicle createVehicle() {return new Car();}@OverrideWeapon createWeapon() {return new AK47();}}
最终使用使用方式举例:
对象为 父类引用 指向子类对象 调用具体的方法
为什么 这里的产品和工厂都是抽象的而不是接口
按照面向对象的思想 形容词用接口 名词用抽象类
