码农小汪-设计模式-抽象工厂模式
来源:互联网 发布:中国乒乓球 知乎 编辑:程序博客网 时间:2024/06/08 16:29
抽象工厂模式和我们的工厂模式的区别呢?
抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。
即提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。“一对多”的关系。
工厂方法:一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。
即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系。
工厂方法之前我们讲过,一个具体的产品对应了一个具体的实现类,我们这个是一对一的模式。抽象工厂模式是一对多哦,是不是有点像简单工厂(我们的简单工厂没有抽象哦)但是也是一对对的关系,不可否认,每个都有自己的用途,好好体会
工厂方法
抽象工厂方法
其实就看图来说的话,感觉差距不是很大。
interface IProductA{ public void method(); } interface IProductB{ public void method(); } class ProductA1 implements IProductA{ public void method() { System.out.println("厂商1 生产ProductA1 ..."); } } class ProductA2 implements IProductA{ public void method() { System.out.println("厂商2 生产ProductA2 ..."); } } class ProductB1 implements IProductB{ public void method() { System.out.println("厂商1 生产ProductB1 ..."); } } class ProductB2 implements IProductB{ public void method() { System.out.println("厂商2 生产ProductB2 ..."); } } //每一种牌子的产品生产工厂,即不同的厂商负责自己牌子产品的生产 abstract class Factory1{ abstract IProductA getProductA1(); abstract IProductB getProductB1(); } abstract class Factory2{ abstract IProductA getProductA2(); abstract IProductB getProductB2(); } //具体的工厂用来生产相关的产品 class ConcreteFactory1 extends Factory1{ public IProductA getProductA1() { return new ProductA1(); } public IProductB getProductB1() { return new ProductB1(); } } class ConcreteFactoryB extends Factory2{ public IProductA getProductA2() { return new ProductA2(); } public IProductB getProductB2() { return new ProductB2(); } } //测试类 public class Client { public static void main(String[] args) { //厂商1负责生产产品A1、B1 Factory1 factory1 = new ConcreteFactory1(); IProductA productA1 = factory1.getProductA1(); IProductB productB1 = factory1.getProductB1(); productA1.method(); productB1.method(); //厂商2负责生产产品A2、B2 Factory2 factory2 = new ConcreteFactoryB(); IProductA productA2 = factory2.getProductA2(); IProductB productB2 = factory2.getProductB2(); productA2.method(); productB2.method(); } }
看到了这个,感觉想法是什么?其实真的遇到了用途,你就能清楚的区别不同方法带来的好处。实话说吧。我们工厂方法够解决我们的问题了,抽象工厂方法的出现,就是为了应对一些特殊的问题。
0 0
- 码农小汪-设计模式-抽象工厂模式
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- 抽象工厂设计模式
- 设计模式--抽象工厂
- 【设计模式】抽象工厂
- 设计模式---抽象工厂
- 【设计模式-抽象工厂】
- 设计模式-抽象工厂
- week3-4 类
- xss攻击入门
- 每隔一段时间就从服务端下载数据使用sql语句实现
- Ubuntu下ifconfig出来都是星号
- arm-linux-gcc编译工具的安装
- 码农小汪-设计模式-抽象工厂模式
- VC 字符串转化和分割
- JAVA基础之三:运算操作符
- Fragment详解
- SGU 117 Counting(快速幂)
- poj1087(最大流)
- 如何下载android-cts-5.0_r5源码
- 专题二1001
- 《网络工程师》 Part4 局域网与城域网