设计模式之一工厂模式(Factory Mothod)
2010-11-23 11:15
218 查看
为什么要使用工厂模式
简单工厂模式把对象的创建和初始化工作和客户端分开了,实现了责任分配,但是所有对象的创建和初始化都集中在了这个具体的工厂类里,如果有很多对象创建,这个工厂类就很难维护。所以根据面向对象的思想,要继续改进职责的分配和封装。把每一个产品都有一个具体的工厂类创建,把简单工厂抽象成一个个小的工厂类。这个每个工厂类只负责单独对象的创建,职责变小了。
定义:工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类来实现。
原理:工厂方法有4部分组成:抽象工厂类,具体工厂类,抽象类和具体类。
代码实现薪资程序的设计:
Factory.cs
Salary.cs
Program.cs
优点:客户端不在负责对象的创建,而把这个责任交个了具体的工厂类,客户端只负责对象的调用,从而明确了各个类的职责。
如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体产品类就可以,不影响原来的代码。
缺点:使用该模式额外的编写代码,增加工作量。
简单工厂模式把对象的创建和初始化工作和客户端分开了,实现了责任分配,但是所有对象的创建和初始化都集中在了这个具体的工厂类里,如果有很多对象创建,这个工厂类就很难维护。所以根据面向对象的思想,要继续改进职责的分配和封装。把每一个产品都有一个具体的工厂类创建,把简单工厂抽象成一个个小的工厂类。这个每个工厂类只负责单独对象的创建,职责变小了。
定义:工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类来实现。
原理:工厂方法有4部分组成:抽象工厂类,具体工厂类,抽象类和具体类。
代码实现薪资程序的设计:
Factory.cs
namespace FactoryMethod { interface Factory { Salary CreateSalary(); } public class BeiJingSalaryFactory:Factory { public Salary CreateSalary() { return new BeiJingSalary(); } } public class ShanDongSalaryFactory : Factory { public Salary CreateSalary() { return new ShanDongSalary(); } } }
Salary.cs
namespace FactoryMethod { public interface Salary { void ComputerSalary(); } public class BeiJingSalary :Salary { public void ComputerSalary() { System.Console.WriteLine("开始计算北京子公司的薪水"); } } public class ShanDongSalary : Salary { public void ComputerSalary() { System.Console.WriteLine("开始计算山东子公司的薪水"); } } }
Program.cs
namespace FactoryMethod { class Program { static void Main(string[] args) { Factory factory = new BeiJingSalaryFactory(); Salary salary = factory.CreateSalary(); salary.ComputerSalary(); factory = new ShanDongSalaryFactory(); salary = factory.CreateSalary(); salary.ComputerSalary(); } } }
优点:客户端不在负责对象的创建,而把这个责任交个了具体的工厂类,客户端只负责对象的调用,从而明确了各个类的职责。
如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体产品类就可以,不影响原来的代码。
缺点:使用该模式额外的编写代码,增加工作量。
相关文章推荐
- 设计模式之一工厂模式(Factory Mothod)
- java设计模式之一工厂模式(Factory Method)
- Head First 设计模式 (四) 工厂模式(factory pattern) C++实现
- 设计模式——工厂模式(factory)
- java设计模式之一工厂模式(Factory Method)
- 设计模式——工厂模式(Factory Method)
- Java设计模式 工厂模式(Factory)
- Android设计模式之一个例子让你彻底明白工厂模式(Factory Pattern)
- java设计模式之一工厂模式(Factory Method)
- 设计模式之——工厂模式(FactoryMethodPattern)
- 设计模式——工厂模式(Factory Method)
- 设计模式--工厂模式Factory(创建型)
- Java设计模式之创建型模式-工厂模式(Factory)
- java设计模式之一工厂模式(Factory Method)
- 设计模式(2) –工厂模式(Factory)
- 设计模式(五)——工厂模式(Factory Method)
- 魔兽争霸之PHP设计模式-工厂模式[Factory]
- [C++设计模式] factory 工厂模式
- java设计模式之一工厂模式(Factory Method)
- [设计模式]工厂模式Factory(创建型)