设计模式(二):抽象工厂模式

来源:互联网 发布:武昌淘宝摄影 编辑:程序博客网 时间:2024/05/16 11:13
 class Test    {            /// <summary>       /// 抽象工厂模式将具体产品的创建延迟到具体工厂的子类中,这样将对象的创建封装起来,       /// 可以减少客户端与具体产品类之间的依赖,从而使系统耦合度低,这样更有利于后期的维护和扩展,       /// 这真是抽象工厂模式的优点所在,然后抽象模式同时也存在不足的地方。下面就具体看下抽象工厂的缺点       /// 缺点其实在前面的介绍中以已经涉及了):        ///抽象工厂模式很难支持新种类产品的变化。这是因为抽象工厂接口中已经确定了可以被创建的产品集合,        ///如果需要添加新产品,此时就必须去修改抽象工厂的接口,这样就涉及到抽象工厂类的以及所有子类的改变        ///,这样也就违背了“开发——封闭”原则。       /// </summary>        static void Main()        {             Threads.AbstractFacrory.AbstractFactory nanChangFactory = new Threads.AbstractFacrory.NanChangFactory();            AbstractFacrory.Yabo nanChangYabo = nanChangFactory.CreateYaBo();            nanChangYabo.Print();            Console.ReadKey();        }}


 public class AbstractFacrory   {       public abstract class AbstractFactory       {           public abstract Yabo CreateYaBo();           public abstract Yajia CreateYaJia();       }       /// <summary>       ///        /// </summary>       public class NanChangFactory : AbstractFactory       {                      public override Yabo CreateYaBo()           {               return new NanChangYaBo();           }                      public override Yajia CreateYaJia()           {               return new NanChangYajia();           }       }             public class ShangHaiFactory : AbstractFactory       {           public override Yabo CreateYaBo()           {               return new ShanghaiYaBo();           }           public override Yajia CreateYaJia()           {               return new Shanghaiyajia();           }       }        public abstract class Yabo       {           public abstract void Print();       }       public abstract class Yajia       {           public abstract void Print();       }       public class NanChangYaBo:Yabo       {           public override void Print()           {               Console.WriteLine("NanChang Yabo");           }                 }       public class ShanghaiYaBo : Yabo       {           public override void Print()           {               Console.WriteLine("Shanghai Yabo");           }       }       public class NanChangYajia : Yajia       {           public override void Print()           {               Console.WriteLine("NanChang yajia");           }       }       public class Shanghaiyajia:Yajia       {           public override void Print()           {               Console.WriteLine("Shanghai yabo");           }       }   }


0 0
原创粉丝点击