版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangshuaionline/article/details/85794185
Java23种设计模式
前面工厂方法模式中碰到的问题就是,当类似产品过多的时候,会创造很多实现工厂,造成使用的繁琐。引出本文的抽象工厂模式。
定义:允许使用抽象的接口来创建一系列相互关联或相互依赖的产品族,而不需要知道实际生产出的具体产品是什么。
直接看例子:
需求:M工厂是一家手机厂家,现在要求拓展业务,厂家同时生产笔记本。
1.创建产品接口Product,功能:made。
public interface Product {
void made();
}
2.创建抽象工厂接口Factory,功能:madeComputer、madePhone。
public interface Factory {
Product madePhone();
Product madeComputer();
}
3.创建具体产品实例:PhoneProduct、ComputerProduct。
public class PhoneProduct implements Product{
@Override
public void made() {
Log.w("打印","非常容易创造一款手机");
}
}
public class ComputerProduct implements Product{
@Override
public void made() {
Log.w("打印","费劲吧啦创造一台电脑");
}
}
4.创造M工厂
public class MFactory implements Factory{
@Override
public Product madePhone() {
return new PhoneProduct();
}
@Override
public Product madeComputer() {
return new ComputerProduct();
}
}
5.客户下单:
MFactory mFactory = new MFactory();
Product computer = mFactory.madeComputer();
Product phone = mFactory.madePhone();
computer.made();
phone.made();
打印:
2019-01-07 11:12:18.212 21180-21180/fun.bingo.rxapplication W/打印: 费劲吧啦创造一台电脑
2019-01-07 11:12:18.212 21180-21180/fun.bingo.rxapplication W/打印: 非常容易创造一款手机
与工厂方法模式的最主要区别就是:工厂方法模式一个工厂生产一种产品,而抽象工厂模式一个工厂可以生产多种产品。