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#使用Split分割字符串的几种方法
    GROUP BY,WHERE,HAVING之间的区别和用法
    递归 斐波那契数列
    【公众号系列】一文看懂税费改革
    【MM系列】SAP库龄报表逻辑理解
  • 原文地址:https://www.cnblogs.com/zscmj/p/5971665.html
Copyright © 2011-2022 走看看