zoukankan      html  css  js  c++  java
  • 【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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    C# 调用c++ 生成的dll
    【转】Unity3D的主要类图
    【转】Unity3D开发七惑
    Unity3D 3.5 之windows平台coding及debug环境小结
    __FILE__ __LINE__ C++ 宏定义 调试
    代码换行格式(inconsistent line endings) Windows(CR LF) 修改
    【转】 QGLWidget类
    帧缓冲区对象
    【转】kd树
    【转】unity Mathf 数学运算(C#)
  • 原文地址:https://www.cnblogs.com/zscmj/p/5971665.html
Copyright © 2011-2022 走看看