• 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();
            }

        }


    }

  • 相关阅读:
    Codeforces 706B Interesting drink
    hdu 1937 Finding Seats
    poj 2502 Subway
    hdu 1495 非常可乐
    分布式的一些基础知识
    python __new__和__init__
    TCP的time_wait、close_wait状态
    TCP三次握手,四次挥手
    迭代器、生成器
    创建自定义JSR303的验证约束(Creating custom constraints)
  • 原文地址:https://www.cnblogs.com/rockniu/p/1224440.html
Copyright © 2020-2023  润新知