工厂方法模式(Factory Method)

简单工厂模式如果需要增加新类型,那么需要修改工厂类的代码,这就使得整个设计在一定程度上违反了“开放封闭原则”。

我们定义一个抽象的工厂类,而定义具体的工厂类来实现这个抽象按钮工厂类中定义的方法。

抽象化的结果使这种结构可以在不修改具体工厂类的情况下引进新的产品。这一特点使得工厂方法模式具有超越简单工厂模式的优越性。

工厂方法模式又简称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态模式,属于类的创建型模式。

在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建) 哪一个类。

模式结构:







abstract class Factory
{
        public abstract MobilePhone CreatePhone();
}
class AppleFactory : Factory
{
  public override MobilePhone CreatePhone()
  {
    return new Iphone4S();
  }
}  //其他类似
abstract class MobilePhone
    {
        public abstract void Call();
        public abstract void SendMSG();
    }
class Iphone4S : MobilePhone
    {
        public override void Call()
        {
            Console.WriteLine("用Iphone4S打电话");
        }
        public override void SendMSG()
        {
            Console.WriteLine("用Iphone4S发短信");
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            Factory f = new MicrosoftFactory(); // AppleFactory
            MobilePhone ph = f.CreatePhone();
            ph.Call();
            ph.SendMSG();
 
            Console.ReadKey();
        }
    }





posted @ 2016-05-29 16:05  LeeJuly  阅读(103)  评论(0编辑  收藏  举报