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

  • 相关阅读:
    视图、触发器、事物、存储过程、函数、流程控制
    pymysql
    单表查询与多表查询
    多线程学习(第三天)线程间通信
    多线程学习(第二天)Java内存模型
    多线程学习(第一天)java语言的线程
    springboot集成es7(基于high level client)
    elasticSearch(六)--全文搜索
    elasticSearch(五)--排序
    elasticSearch(四)--结构化查询
  • 原文地址:https://www.cnblogs.com/zscmj/p/5971665.html
Copyright © 2011-2022 走看看