天天看點

設計模式--工廠方法,與生活聯系

一、個人了解

      1、定義建立産品的接口,将實際建立工作延遲到子類中實作

      2、實作調用者與具體産品的解耦

      3、調用者通過工廠來生成産品

二、生活運用

         1、資料庫通路控制,支援access,sql,mysql,oracle多種資料庫

         2、反射工廠模式,利用傳入的參數即可找到指定需要的對象

         3、旅遊公司,選擇去遊玩的路線即可,無需對産品有具體的了解

三、代碼

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

namespace ModeDemo.Factory
{
    public abstract class Creator
    {
        public abstract Product FactoryMethod();
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Factory
{
    public class ConcreateCreator:Creator
    {
        public override Product FactoryMethod()
        {
            return new ConcreateProductA();
        }
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Factory
{
    public class ConcreateCreatorB:Creator
    {
        public override Product FactoryMethod()
        {
            return new ConcreateProductB();
        }
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Factory
{
    public abstract class Product
    {
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Factory
{
    public class ConcreateProductA:Product
    {
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Factory
{
    public class ConcreateProductB:Product
    {
    }
}      
Factory.Creator[] creators = new ModeDemo.Factory.Creator[2];
            creators[0] = new Factory.ConcreateCreator();
            creators[1] = new Factory.ConcreateCreatorB();

            foreach (Factory.Creator creator in creators)
            {
                Factory.Product product = creator.FactoryMethod();
                Console.WriteLine("Created {0}", product.GetType().Name);
            }

            Console.Read();