asp.net 工廠模式講解


工廠模式主要是為創建對象提供過渡接口,以便將創建對象的具體過程屏蔽隔離起來,達到提高靈活性的目的。這也是對象與過程分離的技術提現了oo思想
 一般我們將工廠模式分為一下三種:
   1)簡單工廠模式(Simple Factory)
   2)工廠方法模式(Factory Method)

   3)抽象工廠模式(Abstract Factory)
 
簡單工廠模式:簡單工廠模式又稱靜態工廠方法模式。它存在的目的很簡單:定義一個用於創建對象的接口。
它的組成:
工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯。
抽象產品角色:它一般是具體產品繼承的父類或者實現的接口,要實現什么功能。
具體產品角色:工廠類所創建的對象就是此角色的實例,具體類的實現,是提現產品的實際功能。
 
 下面講一個實例,相信很多人已經看過:
話說十年前,有一個暴發戶,他家有三輛汽車——Benz奔馳、Bmw寶馬、Audi奧迪,還雇了司機為他開車。不過,暴發戶坐車時總是怪怪的:上Benz車后跟司機說“開奔馳車!”,坐上Bmw后他說“開寶馬車!”,坐上Audi說“開奧迪車!”。你一定說:這人有病!直接說開車不就行了?!
而當把這個暴發戶的行為放到我們程序設計中來時,會發現這是一個普遍存在的現象。幸運的是,這種有病的現象在OO(面向對象)語言中可以避免了。下面就以C#語言為基礎來引入我們本文的主題:工廠模式的工廠方法。
//抽象產品角色
public interface Car
{
string drive();
}
 
 
//具體產品角色,具體類的實現
public class BenzCar : Car
{
    public string drive()
    {
        return "Driving Benz";
    }   
}
 
public class BmwCar : Car
{
 
    public string drive()
    {
        return "Driving Bmw";
    }
}
 
 
//工廠類角色,本模式的核心 選擇實體工廠
public static Car DriverCar(string category)
    {
        switch(category)
        {
            case "Benz":
                return new BenzCar();
                break;
 
            case "BmwCar":
                return new BmwCar();
                break;
            default: return null;            
        }       
}
 
//這里用戶只需選擇要開什么車就ok啦
protected void Page_Load(object sender, EventArgs e)
    {
        Car car = Driver.DriverCar("Benz");                       
        Response.Write(car.drive());
 
    }
 
工廠部分好像不太理想,因為每增加一輛車,都要在工廠類中增加相應的業務邏輯或者判斷邏輯。抽象工廠模式能改變這一點。也就可以用條件外置(在web.config里面配置)和反射(加載實體的產品)來實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM