【2016-10-17】【坚持学习】【Day8】【抽象工厂模式】

定义:

提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

结构:

抽象工厂类

具体工厂类

抽象产品类

具体产品类

例子:

代码:

 interface SkinFactory
    {
        Button CreateButton();
        TextField CreateTextField();
        ComboBox CreateComboBox();
    }
  class SummerSkinFactory : SkinFactory 
    {
        public Button CreateButton() 
        {
            return new SummerButton();
        }

        public TextField CreateTextField() 
        {
            return new SummerTextField();
        }

        public ComboBox CreateComboBox() 
        {
            return new SummerComboBox();
        }
    }
 
  interface Button
    {
        void Display();
    }

 interface ComboBox
    {
        void Display();
    }

  interface TextField
    {
        void Display();
    }
 class SummerButton : Button 
    {
        public void Display() 
        {
           Console.WriteLine("显示浅蓝色按钮。");
        }    
    }

 class SummerComboBox : ComboBox 
    {
        public void Display() 
        {
            Console.WriteLine("显示蓝色边框组合框。");
        }    
    }

 class SummerTextField : TextField 
    {
        public void Display() 
        {
            Console.WriteLine("显示蓝色边框文本框。");
        }    
    }

 运行

 //使用抽象层定义
            SkinFactory factory;
            Button bt;
            TextField tf;
            ComboBox cb;

            //读取配置文件
            string factoryType = ConfigurationManager.AppSettings["factory"];

            //反射生成对象
            factory = (SkinFactory)Assembly.Load("AbstractFactorySample").CreateInstance(factoryType);

            bt = factory.CreateButton();
            tf = factory.CreateTextField();
            cb = factory.CreateComboBox();
            bt.Display();
            tf.Display();
            cb.Display();

作者:zscmj
出处:http://www.cnblogs.com/zscmj/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/zscmj/p/5971665.html