设计模式学习与实践(六)----抽象工厂模式(abstract factory)
来源:互联网 发布:弄璋乎弄瓦乎原文 编辑:程序博客网 时间:2024/06/07 06:37
1.1.1 描述
l 正规描述
同一类工厂能够生产出多种类型产品,选择哪个工厂来生产自己需要的产品由调用者自己决定。
l 形象描述
还是请MM吃西式快餐,MM说想吃肯德基的汉堡,就去肯德基店,MM说想吃麦当劳的薯片,就去麦当劳店。西式快餐店是肯德基与麦当劳的抽象,汉堡和薯片是两类食物的抽象,而肯德基的汉堡和麦当劳的薯片是具体的食物。
1.1.2 类图&示意代码
public abstract class ProductA(){
public abstract void productAMethod();
}
public abstract class ProductB(){
public abstract void productBMethod();
}
public class ConcreteProductA1 extends ProductA(){
public void productAMethod(){
System.out.println(“This is concreteProductA1”);
}
}
public class ConcreteProductA2 extends ProductA(){
public void productAMethod(){
System.out.println(“This is concreteProductA2”);
}
}
public class ConcreteProductB1 extends ProductB(){
public void productBMethod(){
System.out.println(“This is concreteProductB1”);
}
}
public class ConcreteProductB2 extends ProductB(){
public void productBMethod(){
System.out.println(“This is concreteProductB2”);
}
}
public abstract class Factory(){
public abstract ProductA createProductA();
public abstract ProductB createProductB();
}
public class ConcreteFactory1 extends Factory(){
public ProductA createProductA(){
return new ConcreteProductA1();
}
public ProductB createProductB(){
return new ConcreteProductB1();
}
}
public class ConcreteFactory2 extends Factory(){
public ProductA createProductA(){
return new ConcreteProductA2();
}
public ProductB createProductB(){
return new ConcreteProductB2();
}
}
public class Client(){
public void main(String args[]){
Factory f1 = new ConcreteFactory1();
ProductA pa1 = f1.createProductA();
pa1.productAMethod();
ProductB pb1 = f1.createProductB();
pb1.productBMethod();
Factory f2 = new ConcreteFactory2();
ProductA pa2 = f2.createProductA();
pa2.productAMethod();
ProductB pb2 = f2.createProductB();
pb2.productBMethod();
}
}
注:
1、 工厂类分为抽象工厂类和实体工厂类,可以有多个实体工厂类
2、 有多个抽象产品类,每一个抽象产品类又有多个实体产品子类
3、 每一个实体工厂类负责创建一类实体产品类
1.1.3 举例
1.1.4 比较
- 设计模式学习与实践(六)----抽象工厂模式(abstract factory)
- java设计模式学习 ----- 抽象工厂模式(Abstract Factory)
- 抽象工厂(Abstract Factory)设计模式
- 设计模式-抽象工厂(Abstract Factory)
- 抽象工厂(Abstract Factory)设计模式
- 设计模式-抽象工厂(Abstract Factory)
- 设计模式学习---Abstract Factory(抽象工厂)
- 设计模式学习笔记:Abstract Factory(抽象工厂)
- 设计模式学习笔记五:抽象工厂(Abstract Factory)
- 设计模式学习总结:抽象工厂(Abstract Factory)
- 设计模式 一 抽象工厂Abstract Factory(工厂模式)
- 设计模式学习-抽象工厂(Abstract Factory)
- 设计模式系列(六)抽象工厂模式(Abstract Factory Pattern)
- 设计模式之六 --- 抽象工厂模式(Abstract Factory)
- 设计模式之六 --- 抽象工厂模式(Abstract Factory)
- 设计模式之六 --- 抽象工厂模式(Abstract Factory)
- 设计模式(2)-抽象工厂模式(Abstract Factory)与生成器模式(Builder)模式
- 设计模式(3)抽象工厂模式(Abstract Factory)
- 如何把程序加入服务
- 呵呵……来到csdn!~~
- div 居中显示
- Spring整理7 -- Bean的作用域
- API SDK
- 设计模式学习与实践(六)----抽象工厂模式(abstract factory)
- MS SQL Server和MySQL区别
- VC常用数据类型使用转换详解
- 如何使用.NET生成C#源代码
- 2010年1月21-22日 中文ScrumMaster课程
- 用python, c#, java写的文件拷贝
- BugFree 2使用帮助
- reload 方法 replace 方法
- oracle sql语言模糊查询--通配符like的使用教程