抽象工厂模式
来源:互联网 发布:泰德奥plc编程软件 编辑:程序博客网 时间:2024/06/01 17:01
抽象工厂模式是一种比较常用的模式,其定义如下:
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
使用场景:一个对象族,都有相同的约束,则可以使用抽象工厂模式。
优点:
封装性;
产品组内的条件非公开状态。
缺点:
产品族扩展非常困难;
抽象工厂实现一般代码:
/* * 抽象产品类 */public abstract class AbstractProductA { //每个产品共有的方法 public void shareMethod() { // TODO Auto-generated method stub } public abstract void dosomething();}
/* * 抽象产品类 */public abstract class AbstractProductB { //每个产品共有的方法 public void shareMethod() { // TODO Auto-generated method stub } public abstract void dosomething();}
/* * * 产品A1的实现类 */public class ProductA1 extends AbstractProductA { public void dosomething() { // TODO Auto-generated method stub System.out.println("产品A1的实现方法"); }}
/* * * 产品A2的实现类 */public class ProductA2 extends AbstractProductA { public void dosomething() { // TODO Auto-generated method stub System.out.println("产品A2的实现方法"); }}
/* * * 产品B1的实现类 */public class ProductB1 extends AbstractProductB { public void dosomething() { // TODO Auto-generated method stub System.out.println("产品B1的实现方法"); }}
/* * 产品B2的实现类 */public class ProductB2 extends AbstractProductB { public void dosomething() { // TODO Auto-generated method stub System.out.println("产品B2的实现方法"); }}
/* * * 抽象工厂类 */public abstract class AbstractCreator { //创建产品A家族 public abstract AbstractProductA creareProductA(); public abstract AbstractProductB creareProductB();}
/* * * 产品等级为1的实现类 */public class Creator1 extends AbstractCreator { //只生产等级为1的A产品 public AbstractProductA creareProductA() { // TODO Auto-generated method stub return new ProductA1(); } //只生产等级为1的B产品 public AbstractProductB creareProductB() { // TODO Auto-generated method stub return new ProductB1(); }}
/* * * 产品等级为2的实现类 */public class Creator2 extends AbstractCreator { //只生产等级2的A产品 public AbstractProductA creareProductA() { // TODO Auto-generated method stub return new ProductA2(); } //只生产等级2的B产品 public AbstractProductB creareProductB() { // TODO Auto-generated method stub return new ProductB2(); }}
public class Client { public static void main(String[] args) { // TODO Auto-generated method stub //定义出两个工厂 AbstractCreator creator1=new Creator1(); AbstractCreator creator2=new Creator2(); //产生A1对象 AbstractProductA a1=creator1.creareProductA(); //产生A2对象 AbstractProductA a2=creator2.creareProductA(); //产生B1对象 AbstractProductB b1=creator2.creareProductB(); //产生A1对象 AbstractProductB b2=creator2.creareProductB(); /* * * 然后就可以在这里为所欲为了~~~~~~~~~ */ System.out.println("ok"); }}
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- H5基础第五课时CSS篇(1)
- PHP htmlspecialchars() 的反函数 html_entity_decode()
- Algorithm-Gossip 经典算法系列 说明文档
- Iframe和a标签的downLoad新属性实现-调用浏览器的本地下载功能
- H5基础第五课时CSS篇(2)
- 抽象工厂模式
- Android Studio混淆打包
- extern和static的区别
- 使用南尘的ImagePicker实现仿微信的相册图片选择以及拍照上传
- 关于ctrl+c 和 ctrl+z的区别
- matplotlib学习记录(一)
- 自己用过的linux命令(二)
- linux c语言 模拟键盘输入
- dp46上 HDU1421