一、個人了解
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();