首页 > 代码库 > 【2016-10-17】【坚持学习】【Day8】【抽象工厂模式】

【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();

 

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