JAVA 设计模式抽象工厂模式
来源:互联网 发布:安卓调音软件 编辑:程序博客网 时间:2024/06/03 19:45
抽象工厂UML类图
上一片我们写了工厂方法模式,我们大致了解了他的运作原理,那么我们具体分析一下工厂方法模式和抽象工厂模式的区别吧
工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类
一个抽象工厂类,可以派生出多个具体工厂类
每个具体工厂类只能创建一个具体产品的实例
抽象工厂模式:
多个抽象产品类,每个抽象产品可以派生出多个具体产品类
一个抽象工厂类,可以派生出多个具体工厂类
每个具体工厂类可以创建多个具体产品类的实例
区别:
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个
知道了具体区别,下面看一个抽象工厂类的具体实例吧
//抽象产品类public abstract class ProductA { /** * 每个具体产品子类需要实现的方法 * @return */ public abstract String method();}
//抽象产品类public abstract class ProductB { /** * 每个具体产品子类需要实现的方法 * @return */ public abstract String method();}
//具体产品public class ConcreteProductA1 extends ProductA { @Override public String method() { return "我是具体产品A1"; }}
//具体产品public class ConcreteProductA2 extends ProductA { @Override public String method() { return "我是具体产品A2"; }}
//具体产品public class ConcreteProductB1 extends ProductB { @Override public String method() { return "我是具体产品B1"; }}
//具体产品public class ConcreteProductB2 extends ProductB { @Override public String method() { return "具体产品B2"; }}
//抽象工厂public abstract class AbstractFactory { /** * 创建A的方法 * @return */ public abstract ProductA createproductA(); /** * 创建B的方法 * @return */ public abstract ProductB createproductB();}
//具体工厂public class ConcreteFactory1 extends AbstractFactory { @Override public ProductA createproductA() { return new ConcreteProductA1(); } @Override public ProductB createproductB() { return new ConcreteProductB1(); }}
//具体工厂public class ConcreteFactory2 extends AbstractFactory { @Override public ProductA createproductA() { return new ConcreteProductA2(); } @Override public ProductB createproductB() { return new ConcreteProductB2(); }}
具体调用
public class AbFactoryActivity extends BaseActivity { @Override public int setMainView() { return R.layout.activity_ab_factory; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setToobarTitle("抽象工厂模式"); TextView textView = (TextView) findViewById(R.id.abfactory_text1); TextView textView1 = (TextView) findViewById(R.id.abfactory_text2); ConcreteFactory1 concreteFactory1 = new ConcreteFactory1(); String method = concreteFactory1.createproductA().method(); String method1 = concreteFactory1.createproductB().method(); textView.setText(method + method1); ConcreteFactory2 concreteFactory2 = new ConcreteFactory2(); String method2 = concreteFactory2.createproductA().method(); String method3 = concreteFactory2.createproductB().method(); textView1.setText(method2 + method3); }}
阅读全文
0 0
- java设计模式--抽象工厂
- Java设计模式-抽象工厂
- Java设计模式--抽象工厂
- java设计模式-抽象工厂
- Java设计模式-抽象工厂设计模式
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式_抽象工厂模式
- Java设计模式之抽象工厂模式
- 设计模式(JAVA)------抽象工厂模式
- java设计模式之抽象工厂模式
- 【Java设计模式】之抽象工厂模式
- java设计模式---抽象工厂模式
- java设计模式---抽象工厂模式
- java设计模式---抽象工厂模式
- JAVA系列-设计模式-抽象工厂模式
- java设计模式 之 抽象工厂模式
- Java--设计模式之抽象工厂模式
- 通过C#/.NET API使用CNTK
- Mybatis源码解析
- spring boot学习 初级入门
- leetcode题解-18. 4Sum
- oracle 解锁表
- JAVA 设计模式抽象工厂模式
- 了解svmlight的模型策略算法
- Selective Search for Object Recoginition
- 设置通用jsp里面的路径
- Google无法登陆解决方法
- node 判断打开的是文件 还是 文件夹
- hibernnate一对多查询
- mysql 启动1067错误,以及修改字符集重启之后复原(无效)
- From Agile To DevOps