工厂方法模式

工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。  

工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。  

工厂方法模式(Factory Method pattern)是最典型的模板方法模式(Templete Method pattern)应用。

2010090311521923.jpg

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
public abstract class Product
{
private string productA;
public string ProductA
{
get { return this .productA; }
set { this .productA = value; }
}
private string productB;
public string ProductB
{
get { return this .productB; }
set { this .productB = value; }
}

public abstract void PrintProductMessage();
}
public class Operate1:Product
{
public override void PrintProductMessage()
{
Console.WriteLine(ProductA);
}
}
public class Operate2:Product
{

public override void PrintProductMessage()
{
Console.WriteLine(ProductB);
}
}
public interface IFactory
{
Product CreateClass();
}
public class Factory1 : IFactory
{
public Product CreateClass()
{
return new Operate1();
}
}
public class Factory2 : IFactory
{
public Product CreateClass()
{
return new Operate2();
}
}
class Program
{
static void Main( string [] args)
{
Factory1 f1
= new Factory1();
Factory2 f2
= new Factory2();

Product pro
= f1.CreateClass();

pro.ProductA
= " 产品1 " ;
pro.ProductB
= " 产品2 " ;

pro.PrintProductMessage();
Console.ReadLine();
}
}

 

转载于:https://www.cnblogs.com/Tim_Liu/archive/2010/09/03/1816872.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值