抽象工厂

来源:互联网 发布:施工动画软件 编辑:程序博客网 时间:2024/06/05 00:52

工厂方法模式:
每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。
抽象工厂模式:
一个工厂可以生产一系列产品(一族产品),极大减少了工厂类的数量

产品等级结构:产品等级结构即产品的继承结构
产品族:产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品
这里写图片描述
系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的具体产品时就可以使用抽象工厂模式
抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式

当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、更有效率

缺点:对于增加新的产品等级结构,需要修改所有的工厂角色,包括抽象工厂类,在所有的工厂类中都需要增加生产新产品的方法,不能很好地支持“开闭原则”。

抽象工厂设计中的角色:
1、抽象产品
2、具体产品
3、抽象工厂
4、具体工厂

和工厂方法的角色相比,并没有什么不同,只不过抽象工厂中的产品等级结构不止一个;

工厂模式的退化:
当抽象工厂模式中每一个具体工厂类只创建一个产品对象,也就是只存在一个产品等级结构时,抽象工厂模式退化成工厂方法模式;当工厂方法模式中抽象工厂与具体工厂合并,提供一个统一的工厂来创建产品对象,并将创建对象的工厂方法设计为静态方法时,工厂方法模式退化成简单工厂模式。

package AbstractFactoryTest;/* * 抽象产品1 */interface artsInterface{    public void createArts();}/* * 抽象产品2 */interface scientistInterface{    public void createScientist();}/* * 具体产品1 */class artsA implements artsInterface{    @Override    public void createArts() {        System.out.println("文科生A已产生");    }}/* * 具体产品2 */class scientistA implements scientistInterface{    @Override    public void createScientist() {        System.out.println("理科生A已产生");    }}/* * 抽象工厂 */interface abstractFactory{    public artsInterface createConcreteArts();    public scientistInterface createConcreteScientist();}/* * 具体工厂 */class concreteFactory implements abstractFactory{    @Override    public artsInterface createConcreteArts() {        // TODO Auto-generated method stub        return new artsA();    }    @Override    public scientistInterface createConcreteScientist() {        // TODO Auto-generated method stub        return new scientistA();    }}public class abstractFactoryModel {    public static void main(String[] args) {         abstractFactory af = new concreteFactory();         af.createConcreteArts().createArts();    }}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝不好好吸奶怎么办 宝宝不用劲吸奶怎么办 刚出生的宝宝不吃奶怎么办 老婆怀孕想吐怎么办呢 菜把下水道堵了怎么办 一楼厕所堵了怎么办 农村房屋确权有争议怎么办 盲审一个没过怎么办 本科生论文盲审不过怎么办 本科盲审没通过怎么办 一篇论文多次引用著作怎么办 学生毕业后改名学籍怎么办 大学毕业后改名字后学籍怎么办 考科目三下暴雨怎么办 挂科太多拿不到毕业证怎么办 挂科太多不给毕业证怎么办 大专毕业拿不到毕业证怎么办 高考差一分二本怎么办 3个月宝宝大小眼怎么办 华东交大理工学院没有评教怎么办 学校断4g网怎么办 学校移动4g网卡怎么办 没上专科线怎么办福建 联考没过本科线怎么办 拍婚纱拍的脸歪怎么办? 老婆彻底寒心要离婚怎么办 手机被同学偷了怎么办 钱被同学偷了怎么办 上班穿皮鞋脚疼怎么办 高跟靴子买大了怎么办 我怀了第三个小孩怎么办? 离婚前把钱花了怎么办 对谈对象有压力怎么办 和对象感情淡了怎么办 孩子处对象学习下降怎么办 孩子高三成绩差怎么办 老妈怨气太重怎么办 广东小高考有d怎么办 高考考生档案袋有个小洞怎么办 江苏省考生出省后小高考成绩怎么办 江苏小高考三D怎么办