zoukankan      html  css  js  c++  java
  • Head First设计模式学习笔记:工厂方法

    .NET FCL中工厂方法的实例:枚举器

    1. IEnumerable是工厂原型
    2. IEnumerator是产品原型
    3. List, ArrayList这些类都是建立产品的具体类,都实现了IEnumerable接口,有一个GetEnumerator()的方法返回IEnumerator

    实现一个简单的工厂方法

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;

    namespace DesignPattern.FactoryMethod
    {   

        
    //工厂原型
        interface IFactory
        
    {
            
    //建立产品的方法(这就是工厂方法?)
            IProduct CreateProduct();
        }


        
    //产品原型
        interface IProduct
        
    {
            
    string ProductName
            
    setget; }

            
    int GetQty();
        }


        
    //具体工厂1
        class Factory1 : IFactory
        
    {
            
    IFactory Members
        }


        
    //具体产品1
        class Product1 : IProduct
        
    {
            
    IProduct Members

            
    public override string ToString()
            
    {
                
    return string.Format("<Product 1>|ProductName={0}, GetQty={1}", ProductName, GetQty());
            }

        }


        
    //具体工厂2
        class Factory2 : IFactory
        
    {
            
    IFactory Members

            
    //具体产品2
           public class Product2 : IProduct
            
    {
                
    IProduct Members


                
    public override string ToString()
                
    {
                    
    return string.Format("<Product 2>|ProductName={0}, GetQty={1}", ProductName, GetQty());
                }

            }


        }


        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                IFactory factory 
    = new Factory1();

                IProduct product 
    = factory.CreateProduct();

                Console.WriteLine(product);

                factory 
    = new Factory2();
                product 
    = factory.CreateProduct();
                Console.WriteLine(product);

                Console.ReadLine();
            }

        }


    }

  • 相关阅读:
    53分(我的所有)请教:关于ClientDataSet新增记录问题(请富翁们关注!谢谢)
    DBGrid显示行号的几种方法
    现在序号加上,但怎么控制这一列不能拖动,换句话说不能获取焦点?
    Delphi
    巧妙修复delphi文件关联
    cxGrid中有没有办法操作单个cell是否只读?
    delphi cxgrid 使用方法
    Delphi XE2 的控件安装方法。
    舟山牙医 君子慎独 让你的DBGrid竖着站
    DELPHI程序的自动升级功能的实现(AUTOUPDATE使用指南)
  • 原文地址:https://www.cnblogs.com/rockniu/p/1224440.html
Copyright © 2011-2022 走看看