抽象工厂模式
2012-09-08 16:33
169 查看
抽象工厂模式(AbstractFactoryPattern)提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类。
抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。
抽象工厂模式的静态建模
客户需要产品只要向抽象工厂请求即可,由具体工厂生产具体产品给客户。
说到这先必都糊涂啦,说下区别吧!
抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。
抽象工厂模式的静态建模
客户需要产品只要向抽象工厂请求即可,由具体工厂生产具体产品给客户。
说到这先必都糊涂啦,说下区别吧!
工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别: 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式的具体工厂类可以创建多个具体产品类的实例。
实例:
一个抽象工厂类,可以派生出多个具体工厂类:
Factory.java
publicinterfaceFactory{ publicSalarycreateSalary(); publicInsurancecreateInsurance(); }
HeBeiFactory.java
publicclassHeBeiFactoryimplementsFactory{ publicSalarycreateSalary(){ returnnewHeBeiSalary(); } publicInsurancecreateInsurance(){ returnnewHeBeiInsurance(); } }
JiLinFactory.java
publicclassJiLinFactoryimplementsFactory{ publicSalarycreateSalary(){ returnnewJiLinSalary(); } publicInsurancecreateInsurance(){ returnnewJiLinInsurance(); } }
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
Salary.java
publicinterfaceSalary{ voidcomputerSalary(); }
Insurance.java
publicinterfaceInsurance{ voidcomputerInsurance(); }
HeBeiSalary.java
publicclassHeBeiSalaryimplementsSalary{ publicvoidcomputerSalary(){ System.out.println("开始计算河北子公司的薪资"); } }
JiLinSalary.java
publicclassJiLinSalaryimplementsSalary{ publicvoidcomputerSalary(){ System.out.println("开始计算吉林子公司的薪资"); } }
HeBeiInsurance.java
publicclassHeBeiInsuranceimplementsInsurance{ publicvoidcomputerInsurance(){ System.out.println("开始计算河北子公司的社会保险"); } }
JiLinInsurance.java
publicclassJiLinInsuranceimplementsInsurance{ publicvoidcomputerInsurance(){ System.out.println("开始计算吉林子公司的社会保险"); } }
Client.java
publicclassClient{ publicstaticvoidmain(String[]args){ Factoryfactory=newHeBeiFactory(); Salarysalary=factory.createSalary(); salary.computerSalary(); Insuranceinsurance=factory.createInsurance(); insurance.computerInsurance(); factory=newJiLinFactory(); salary=factory.createSalary(); salary.computerSalary(); insurance=factory.createInsurance(); insurance.computerInsurance(); } }
在工厂方法模式中,客户端不再负责对象的创建,而是把这个责任交给了具体的工厂类,客户端只负责对对象的调用,从而明确了各个类的职责。当一系列相互关联的产品被设计到一个工厂类后,客户端的调用将会变得非常简单。
相关文章推荐
- C++设计模式——抽象工厂模式
- javascript-抽象工厂模式
- 设计模式之抽象工厂模式
- 设计模式-抽象工厂模式
- 抽象工厂模式
- Java实现(02)——抽象工厂模式(Abstract Factory Pattern)
- 大话设计模式-抽象工厂模式
- 程序员该如何管理后宫:皇后造更多小人(抽象工厂模式)
- 抽象工厂模式
- 设计模式深入学习-抽象工厂模式
- C# 设计模式巩固 - 抽象工厂模式
- PHP简单工厂模式、工厂方法模式和抽象工厂模式比较
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- 抽象工厂模式
- 工厂模式,工厂方法模式,抽象工厂模式 详解
- 《设计模式》-- 抽象工厂模式
- 系列笔记5、抽象工厂模式 -MediaPlayerFactory(缺)
- Python的创建型设计模式之抽象工厂模式
- 设计模式之抽象工厂模式
- 设计模式总纲——抽象工厂模式