标签:定义 att 修改 create cli 描述 创建 华为手机 多个
在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。
为了更清晰地理解工厂方法模式,需要先引入两个概念:
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。
抽象工厂模式包含如下角色:
# 抽象工厂
public abstract class AbstractFactory {
public abstract AbstractTV createTV();
public abstract AbstractMobile createMobile();
}
# 具体工厂
public class HuaWeiFactory extends AbstractFactory {
@Override
public AbstractTV createTV() {
return new HuaWeiTV();
}
@Override
public AbstractMobile createMobile() {
return new HuaWeiMobile();
}
}
# 抽象产品
public abstract class AbstractMobile {
public abstract String name();
}
public abstract class AbstractTV {
public abstract String name();
}
# 具体产品
public class HuaWeiMobile extends AbstractMobile {
@Override
public String name() {
return "华为手机";
}
}
public class HuaWeiTV extends AbstractTV {
@Override
public String name() {
return "华为电视";
}
}
public class MiMobile extends AbstractMobile {
@Override
public String name() {
return "小米手机";
}
}
public class MiTV extends AbstractTV {
@Override
public String name() {
return "小米电视";
}
}
# 调用
public class Client {
public static void main(String[] args) {
AbstractFactory factory = new HuaWeiFactory();
AbstractMobile mobile = factory.createMobile();
System.out.println(mobile.name()); // 华为手机
AbstractTV tv = factory.createTV();
System.out.println(tv.name()); // 华为电视
}
}
设计模式-04抽象工厂模式(Abstract Factory Pattern)
标签:定义 att 修改 create cli 描述 创建 华为手机 多个
原文地址:https://www.cnblogs.com/wuqinglong/p/12294019.html