创建型模式 04 抽象工厂模式

抽象工厂模式Abstract Factory

创建一组相关或相互依赖的对象

结构与工厂模式类似,只是产品变成类多个抽象产品

实例

在这里插入图片描述
产品
共两个产品等级结构

Screen结构

public interface Screen {
    void display();
}
public class MacScreen implements Screen {
    @Override
    public void display() {
        System.out.println("苹果界面");
    }
}
public class WindowsScreen implements Screen{
    @Override
    public void display() {
        System.out.println("Windows界面");
    }
}

Operate结构

public interface Operate {
    void Use();
}
public class MacOperate implements Operate {
    @Override
    public void Use() {
        System.out.println("使用苹果操作系统");
    }
}
public class WindowsOperate implements Operate{

    @Override
    public void Use() {
        System.out.println("使用Windows操作系统");
    }
}

工厂

抽象工厂

public interface IFactory {
    Screen productScreen();
    Operate productOperate();
}

实例工厂:创建Windows族

public class WindowsFactory implements IFactory{
    @Override
    public Screen productScreen() {
        return new WindowsScreen();
    }

    @Override
    public Operate productOperate() {
        return new WindowsOperate();
    }
}

实例工厂:创建Mac族

public class WindowsFactory implements IFactory{
    @Override
    public Screen productScreen() {
        return new WindowsScreen();
    }

    @Override
    public Operate productOperate() {
        return new WindowsOperate();
    }
}

工厂模式总结

使一个类的实例化延迟到子类,为了生产一个实体类

产品等级结构:产品的继承结构,电视机与具体品牌电视机构成一个产品等级结构
产品族,由同一工厂生产的,位于不同产品等级结构的一组产品,同组产品可以是没有任何关系的对象,如同一品牌各种的电器

工厂模式

一个产品等级结构(最多一个抽象产品->产生多个具体产品)
定义一个用于创建对象的接口,让子类决定实例化哪一个类

抽象工厂模式

多个产品等级结构(多个抽象产品->每个抽象产品都可产生多个具体产品)
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体

给客户端提供一个统一接口,可以创建多个复杂产品族中的产品对象

系统中有多于一个的产品族,而每次只使用其中某一产品族,属于同一个产品族的产品将在一起使用,设计时要体现出这种约束,创建工厂实现时要把这些放在一起使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值