字节跳动飞书内推!
北京、杭州、武汉、广州、深圳、上海,六大城市等你来投。
感兴趣的朋友可以私我咨询&内推,也可以通过链接直接投递!
海量HC,极速响应,快来和我成为同事吧。
今日头条、抖音、Tik Tok也可以内推~
点击进入我的博客
2.3.1 抽象工厂模式简介
- 抽象工厂模式是所有形态的工厂模式中最为抽象和具有一般性的形态。
- “抽象”来自“抽象产品角色”,“抽象工厂”就是抽象产品角色的工厂。
- 抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构。
2.3.2 抽象工厂方式结构
- 抽象工厂(Creator)角色:担任这个角色的是抽象方法模式的核心,它是与应用程序无关的。
- 具体工厂(Concrete Creator)角色:具体工厂角色含有与业务密切相关的逻辑,并且受到应用程序的调用以创建导出类。
- 抽象产品(Product)角色:抽象方法模式所创建的对象的超类,也就是所有产品对象的共同父类或共同拥有的接口。
- 具体产品(Concrete Product)角色:抽象工厂模式所创建的每一个对象都是某个具体产品角色的实例。
2.3.3 抽象工厂方式细节
抽象方法模式场景
- 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节。这对于所有形态的工厂模式都是重要的;
- 一个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品;
- 同属于同一个产品族的产品是在一起使用的,这一约束必须要在系统的设计中体现出来;
- 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
抽象方法模式优点
- 隔离了具体类的生成,使得用户不需要知道什么被创建了。
- 当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。
抽象方法模式缺点
- 抽象工厂的接口确定了可以被创建的产品集合,所以难以扩展抽象工厂以生成新种类的产品。
2.3.4 三种工厂模式总结
下面例子中,手机、电脑是抽象产品,苹果、三星等是工厂。
简单工厂模式
- 抽象产品叫手机
- 具体产品是苹果手机、三星手机
- 工厂有一个生产手机的方法,可以根据传入品牌是苹果还是三星决定生产哪个品牌的手机
工厂方法模式
- 抽象产品叫手机
- 具体产品是苹果手机、三星手机
- 抽象工厂叫手机工厂
- 具体工厂是苹果手机工厂和三星手机工厂,分别生产苹果手机和三星手机
抽象工厂模式
- 抽象产品叫手机、电脑
- 具体产品是苹果手机、苹果电脑、三星手机、三星电脑
- 抽象工厂叫手机电脑工厂,有两个方法分别是生产手机和生产电脑
- 具体工厂是苹果工厂和三星工厂,苹果工厂的两个方法分别生产苹果手机和苹果电脑,三星工厂的两个方法分别生产三星手机和三星电脑