程序员的知识教程库

网站首页 > 教程分享 正文

设计模式:抽象工厂模式(抽象工厂模式的简单应用)

henian88 2024-10-18 05:57:33 教程分享 2 ℃ 0 评论

什么是抽象工厂模式?

抽象工厂模式(英文:Abstract factory pattern)的实质是“提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类。”


一句话归纳

将一组对象实现细节和使用分离。


代码示例

我是一个电脑厂商,我有两个产品族,一个是“MAC”产品族,一个是“Win”产品族,在每一个产品族里,都会有不同的硬件(例如“键盘”和“鼠标”)。

public interface ComputerFactory {

    Keyboard keyboard();
    Mouse mouse();
}

interface Keyboard { }
interface Mouse{}

class MacKeyboard implements Keyboard {}
class WinKeyboard implements Keyboard {}

class MacMouse implements Mouse {}
class WinMouse implements Mouse {}

class MacComputerFactory implements ComputerFactory {

    @Override
    public Keyboard keyboard() { return new MacKeyboard(); }

    @Override
    public Mouse mouse() { return new MacMouse(); }
}

class WinComputerFactory implements ComputerFactory {

    @Override
    public Keyboard keyboard() { return new WinKeyboard(); }

    @Override
    public Mouse mouse() { return new WinMouse(); }
}

适用性

以下场景我建议你考虑使用:

  • 一个产品族是有多个产品组合的;
  • 提供一个产品类的库,所有的产品都是以同样的接口出现,从而使客户端不依赖具体实现。

局限性

以下场景我建议你谨慎使用:

  • 因为一开始就确定了需要创建产品的集合,所以拓展需要修改抽象工厂的接口,拓展比较难;
  • 增加了系统的抽象和理解难度

抽象工厂和工厂方法的区别

  • 工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则是针对多个产品等级结构;
  • 工厂方法模式提供的产品都是出自同一个接口,而抽象工厂方法模式提供的产品则是不同接口。

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表