最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net創(chuàng)建型設(shè)計模式之簡單工廠模式(Simple?Factory)

 更新時間:2022年05月25日 15:05:25   作者:springsnow  
這篇文章介紹了.Net設(shè)計模式之簡單工廠模式(Simple?Factory),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

簡單工廠模式(Simple Factory Pattern)屬于類的創(chuàng)建型模式,又叫靜態(tài)工廠方法模式(Static FactoryMethod Pattern)

是通過專門定義一個類來負責(zé)創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都具有共同的父類。

這個模式并不屬于GoF23里面的設(shè)計模式,其實他屬于一個過渡的模式,這個模式是為了引出下一篇要將的模式:工廠模式。

一、UML圖

簡單工廠模式解決的問題是如何去實例化一個合適的對象。

簡單工廠模式的核心思想就是:有一個專門的類來負責(zé)創(chuàng)建實例的過程。具體來說,把產(chǎn)品看著是一系列的類的集合,這些類是由某個抽象類或者接口派生出來的一個對象樹。而工廠類用來產(chǎn)生一個合適的對象來滿足客戶的要求。

二、簡單工廠模式的代碼實現(xiàn)

public static Operation createOperate(string operate)
{
    Operation oper = null;
    switch (operate)
    {
        case "+":
            {
                oper = new OperationAdd();
                break;
            }
        case "-":
            {
                oper = new OperationSub();
                break;
            }
        case "*":
            {
                oper = new OperationMul();
                break;
            }
        case "/":
            {
                oper = new OperationDiv();
                break;
            }
    }
    return oper;
}

三、優(yōu)缺點分析:

優(yōu)點:客戶端不需要修改代碼。
缺點: 當(dāng)需要增加新的運算類的時候,不僅需新加運算類,還要修改工廠類,違反了開閉原則。

四、.NET中簡單工廠模式的實現(xiàn)

介紹完了簡單工廠模式之后,.NET類庫中也有類似的實現(xiàn),NET中System.Text.Encoding類就實現(xiàn)了簡單工廠模式,該類中的GetEncoding(int codepage)就是工廠方法,具體的代碼可以通過Reflector反編譯工具進行查看

.NET 中Encoding的UML圖為:

Encoding類中實現(xiàn)的簡單工廠模式是簡單工廠模式的一種演變,此時簡單工廠類由抽象產(chǎn)品角色扮演,然而.NET中Encoding類是如何解決簡單工廠模式中存在的問題的呢(即如果新添加一種編碼怎么辦)?在GetEncoding方法里的switch函數(shù)有如下代碼:

switch (codepage)
     {
          .......
   default:
                    unicode = GetEncodingCodePage(codepage);
                    if (unicode == null)
                    {
                        unicode = GetEncodingRare(codepage); //當(dāng)編碼很少見時
                    }
                    break;
           ......
      }

在GetEncodingRare方法里有一些不常用編碼的實例化代碼,微軟正式通過這個方法來解決新增加一種編碼的問題。(其實也就是列出所有可能的編碼情況),微軟之所以以這樣的方式來解決這個問題,可能是由于現(xiàn)在編碼已經(jīng)穩(wěn)定了,添加新編碼的可能性比較低,所以在.NET 4.5仍然未改動這部分代碼。

到此這篇關(guān)于.Net設(shè)計模式之簡單工廠模式(Simple Factory)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

衡阳市| 九龙县| 石棉县| 衡水市| 康保县| 施秉县| 资阳市| 西丰县| 加查县| 东方市| 江阴市| 丁青县| 临湘市| 健康| 江陵县| 保定市| 远安县| 大埔区| 邵阳市| 西乌珠穆沁旗| 施秉县| 辽宁省| 禹州市| 阿坝| 张家港市| 乐都县| 平和县| 丽江市| 黑河市| 滨州市| 夹江县| 横山县| 如东县| 常山县| 姜堰市| 峡江县| 黔西县| 山阳县| 东乌珠穆沁旗| 安国市| 黔西|