您的位置:首页 > 其它

设计模式之一工厂模式(Factory Mothod)

2010-11-23 11:15 218 查看
为什么要使用工厂模式

简单工厂模式把对象的创建和初始化工作和客户端分开了,实现了责任分配,但是所有对象的创建和初始化都集中在了这个具体的工厂类里,如果有很多对象创建,这个工厂类就很难维护。所以根据面向对象的思想,要继续改进职责的分配和封装。把每一个产品都有一个具体的工厂类创建,把简单工厂抽象成一个个小的工厂类。这个每个工厂类只负责单独对象的创建,职责变小了。



定义:工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类来实现。

原理:工厂方法有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();
}
}
}


优点:客户端不在负责对象的创建,而把这个责任交个了具体的工厂类,客户端只负责对象的调用,从而明确了各个类的职责。

如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体产品类就可以,不影响原来的代码。

缺点:使用该模式额外的编写代码,增加工作量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: