Java设计模式4:工厂模式

来源:互联网 发布:dns域名解析软件 编辑:程序博客网 时间:2024/05/29 04:47

参考:http://blog.csdn.net/jason0539/article/details/23020989

一.工厂模式分类
1.简单工厂
2.工厂方法
3.抽象工厂

二.3种工厂类型说明
1.简单工厂
包含角色:
◆工厂类角色:应该是应用中唯一用到具体产品的类,用来创建产品
◆ 抽象产品角色:具体产品的超类(父类,抽象类,接口)
◆ 具体产品角色:工厂类所创建的对象就是此角色的实例

图示:
这里写图片描述

2.工厂方法
包含角色:(与简单工厂不同的是,创建具体产品的工厂更多了,抽象产品的分类更多了)
◆抽象工厂角色:所有具体工厂的超类,(包含)抽象的 工厂方法,让不同类型的工厂子类创建不同类型下的不同特性的产品
◆具体工厂角色:抽象工厂的实现,根据各自不同的需求创建不同类型下的不同特性的产品
◆抽象产品角色:具体产品的超类(父类,抽象类,接口)
◆具体产品角色:具体工厂角色所创建的对象就是此角色的实例,根据不同类型的抽象产品 选择对应类型的 具体工厂 来创建此类型下不同特性的具体产品(分类由子类逻辑划分)

图示:
这里写图片描述

原理:
1.通过不同类型的 具体工厂实现的 工厂方法,创建不同类型下的不同特性的产品

3.抽象工厂
http://blog.csdn.net/jason0539/article/details/44976775
角色:
◆抽象工厂角色(包含多个创建不同产品的抽象方法)
◆具体工厂角色A(方法1创建抽象产品角色A的具体产品角色A1,方法2创建抽象产品角色B的具体产品角色B1)
◆具体工厂角色B(方法1创建抽象产品角色A的具体产品角色A2,方法2创建抽象产品角色B的具体产品角色B2)
◆具体工厂角色……….

◆抽象产品角色A
◆具体产品角色A1
◆具体产品角色A2

◆抽象产品角色B
◆具体产品角色B1
◆具体产品角色B2

这里写图片描述

抽象工厂和工厂方法的区别:
1.抽象工厂创建的时产品家族(多个不同的抽象产品,并且每个抽象产品都有多个具体产品)
2.抽象工厂的工厂方法有多个,而工厂方法只有一个
3.——……………………………………………………………