青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

OOP遵照:開放封閉原則--OCP

一、OCP簡介(OCP--Open-Closed Principle):
Software entities(classes,modules,functions,etc.) should be open for extension, but closed for modification
。
軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉,即軟件實(shí)體應(yīng)當(dāng)在不修改(在.Net當(dāng)中可能通過代理模式來達(dá)到這個(gè)目的)的前提下擴(kuò)展。
Open for extension:
當(dāng)新需求出現(xiàn)的時(shí)候,可以通過擴(kuò)展現(xiàn)有模型達(dá)到目的。   
Close for modification:
對(duì)已有的二進(jìn)制代碼,如dll,jar等,則不允許做任何修改。
    
二、OCP舉例:
1
、例子一
假如我們要寫一個(gè)工資稅類,工資稅在不同國家有不同計(jì)算規(guī)則,如果我們不堅(jiān)持OCP,直接寫一個(gè)類封裝工資稅的算稅方法,而每個(gè)國家對(duì)工資稅的具體實(shí)現(xiàn)細(xì)節(jié)是不盡相同的!如果我們?cè)试S修改,即把現(xiàn)在系統(tǒng)需要的所有工資稅(中國工資稅、美國工資稅等)都放在一個(gè)類里實(shí)現(xiàn),誰也不能保證未來系統(tǒng)不會(huì)被賣到日本,一旦出現(xiàn)新的工資稅,而在軟件中必須要實(shí)現(xiàn)這種工資稅,這個(gè)時(shí)候我們能做的只有找出這個(gè)類文件,在每個(gè)方法里加上日本稅的實(shí)現(xiàn)細(xì)節(jié)并重新編譯成DLL!雖然在.NET的運(yùn)行環(huán)境中,我們只要將新的DLL覆蓋到原有的DLL即可,并不影響現(xiàn)有程序的正常運(yùn)行,但每次出現(xiàn)新情況都要找出類文件,添加新的實(shí)現(xiàn)細(xì)節(jié),這個(gè)類文件不斷擴(kuò)大,以后維護(hù)起來就變的越來越困難,也并不滿足我們以前說的單一職責(zé)原則(SRP),因?yàn)椴煌瑖业墓べY稅變化都會(huì)引起對(duì)這個(gè)類的改變動(dòng)機(jī)!如果我們?cè)谠O(shè)計(jì)這個(gè)類的時(shí)候堅(jiān)持了OCP的話,把工資稅的公共方法抽象出來做成一個(gè)接口,封閉修改,在客戶端(使用該接口的類對(duì)象)只依賴這個(gè)接口來實(shí)現(xiàn)對(duì)自己所需要的工資稅,以后如果系統(tǒng)需要增加新的工資稅,只要擴(kuò)展一個(gè)具體國家的工資稅實(shí)現(xiàn)我們先前定義的接口,就可以正常使用,而不必重新修改原有類文件!
 
2
、例子二
下面這個(gè)例子就是既不開放也不封閉的,因?yàn)?span lang="EN-US">Client
Server都是具體類,如果我要Client使用不同的一個(gè)Server類那就要修改Client類中所有使用Server類的地方為新的Server類。

class Client
{
   Server server;
   void GetMessage()
   {
      server.Message();
   }
}
 
class Server
{
   void Message();
}
 


下面為修改后符合OCP原則的實(shí)現(xiàn),我們看到Server類是從ClientInterface繼承的,不過ClientInterface卻不叫ServerInterface,原因是我們希望對(duì)Client來說ClientInterface是固定下來的,變化的只是Server。這實(shí)際上就變成了一種策略模式(Gof Strategy


interface ClientInterface
{
    public void Message();
    //Other functions
}
 
class Server:ClientInterface
{
    public void Message();
}
 
class Client
{
   ClientInterface ci;
   public void GetMessage()
   {
       ci.Message();
   }
   public void Client(ClientInterface paramCi)
   {
       ci=paramCi;
   }
}
 
//
那么在主函數(shù)(或主控端)
public static void Main()
{
   ClientInterface ci = new Server();
   //
在上面如果有新的Server類只要替換Server()就行了.
   Client client = new Client(ci);
   client.GetMessage();
}
 

3、例子三
使用Template Method實(shí)現(xiàn)OCP
public abstract class Policy
{
    private int[] i ={ 1, 1234, 1234, 1234, 132 };
    public bool Sort()
    {
        SortImp();
    }
    protected virtual bool SortImp()
    {
 
    }
}
 
class Bubbleimp : Policy
{
    protected override bool SortImp()
    {
        //
冒泡排序
    }
}
class Bintreeimp : Policy
{
    protected override bool SortImp()
    {
        //
二分法排序
    }
}
 
//
主函數(shù)中實(shí)現(xiàn)
static void Main(string[] args)
{
    //
如果要使用冒泡排序,只要把下面的Bintreeimp改為Bubbleimp
    Policy sort = new Bintreeimp();
    sort.Sort();
}
 
三、OCP優(yōu)點(diǎn):
1
、降低程序各部分之間的耦合性,使程序模塊互換成為可能;
2
、使軟件各部分便于單元測(cè)試,通過編制與接口一致的模擬類(Mock),可以很容易地實(shí)現(xiàn)軟件各部分的單元測(cè)試;
3
、利于實(shí)現(xiàn)軟件的模塊的呼喚,軟件升級(jí)時(shí)可以只部署發(fā)生變化的部分,而不會(huì)影響其它部分;
 
四、使用OCP注意點(diǎn):
1
、實(shí)現(xiàn)OCP原則的關(guān)鍵是抽象;
2
、兩種安全的實(shí)現(xiàn)開閉原則的設(shè)計(jì)模式是:Strategy pattern(策略模式),Template Methord(模版方法模式);
3
、依據(jù)開閉原則,我們盡量不要修改類,只擴(kuò)展類,但在有些情況下會(huì)出現(xiàn)一些比較怪異的狀況,這時(shí)可以采用幾個(gè)類進(jìn)行組合來完成;
4
、將可能發(fā)生變化的部分封裝成一個(gè)對(duì)象,: 狀態(tài), 消息,,算法,數(shù)據(jù)結(jié)構(gòu)等等 , 封裝變化是實(shí)現(xiàn)"開閉原則"的一個(gè)重要手段,如經(jīng)常發(fā)生變化的狀態(tài)值,如溫度,氣壓,顏色,積分,排名等等,可以將這些作為獨(dú)立的屬性,如果參數(shù)之間有關(guān)系,有必要進(jìn)行抽象。對(duì)于行為,如果是基本不變的,則可以直接作為對(duì)象的方法,否則考慮抽象或者封裝這些行為;
5
、在許多方面,OCP是面向?qū)ο笤O(shè)計(jì)的核心所在。遵循這個(gè)原則可帶來面向?qū)ο蠹夹g(shù)所聲稱的巨大好處(靈活性、可重用性以及可維護(hù)性)。然而,對(duì)于應(yīng)用程序的每個(gè)部分都肆意地進(jìn)行抽象并不是一個(gè)好主意。應(yīng)該僅僅對(duì)程序中呈現(xiàn)出頻繁變化的那部分作出抽象。拒絕不成熟的抽象和抽象本身一樣重要;

posted on 2008-12-22 21:27 肥仔 閱讀(674) 評(píng)論(0)  編輯 收藏 引用 所屬分類: OOP

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品最新地址| 蜜臀va亚洲va欧美va天堂| 亚洲天堂成人在线观看| 亚洲精品久久久久久久久久久久久 | 久久夜色精品国产噜噜av| 久久精品在线| 玖玖玖国产精品| 欧美a级大片| 欧美日韩成人一区二区| 欧美激情一级片一区二区| 欧美极品aⅴ影院| 欧美日韩中文字幕日韩欧美| 欧美性一区二区| 国产精品久久久久91| 国产精品日韩电影| 国产一区二区三区观看| 亚洲成人在线视频网站| 亚洲欧洲视频| 亚洲无限av看| 久久国产一区二区三区| 免费观看久久久4p| 亚洲人永久免费| 亚洲一区二区伦理| 久久国产精品亚洲77777| 久久这里只有| 欧美日韩三级| 国产农村妇女精品一区二区| 在线观看久久av| 一区二区精品国产| 欧美在线观看一区二区| 美女视频黄a大片欧美| 亚洲激情一区二区| 亚洲综合视频一区| 裸体女人亚洲精品一区| 欧美亚洲成人网| 黑丝一区二区三区| 99精品热视频只有精品10| 欧美一区二区在线播放| 欧美激情视频给我| 在线亚洲观看| 久久亚洲私人国产精品va| 欧美日韩裸体免费视频| 国产一区二区久久久| 亚洲精品少妇| 久久aⅴ国产紧身牛仔裤| 欧美激情在线观看| 亚洲资源av| 欧美插天视频在线播放| 国产精品亚洲第一区在线暖暖韩国| 伊人精品成人久久综合软件| 亚洲视频在线观看免费| 快播亚洲色图| 亚洲视频1区2区| 老司机成人网| 国产伦精品一区二区三区视频孕妇 | 亚洲国产裸拍裸体视频在线观看乱了| 99精品视频免费在线观看| 久久精品国产精品亚洲| 欧美色中文字幕| 亚洲国产精品va在线观看黑人| 午夜精品999| 最新成人av在线| 久久久久久网| 国产欧美一区二区在线观看| 一区二区精品在线| 欧美韩日高清| 久久国产精品久久w女人spa| 国产精品a久久久久久| 亚洲精品国产精品国产自| 久久女同精品一区二区| 中文在线不卡| 欧美人妖在线观看| 亚洲国产一区二区三区a毛片| 久久精品视频在线| 亚洲天堂第二页| 欧美日韩亚洲免费| 亚洲精品日本| 欧美国产激情二区三区| 久久精品视频va| 国产偷久久久精品专区| 亚洲欧美日韩天堂| 亚洲美女91| 欧美精品入口| 亚洲美女av黄| 亚洲国产精品福利| 免费在线成人| 亚洲国产一区二区a毛片| 噜噜噜躁狠狠躁狠狠精品视频 | 欧美大胆成人| 亚洲国产成人精品久久久国产成人一区 | 国产精品久久福利| 在线视频欧美一区| 亚洲毛片av在线| 欧美精品 国产精品| 亚洲日本欧美天堂| 亚洲国产精品va在线看黑人动漫| 久久久中精品2020中文| 狠狠色综合网| 蜜乳av另类精品一区二区| 久久国产视频网站| 国模大胆一区二区三区| 久久免费国产| 久久久xxx| 在线精品一区| 亚洲国产精品女人久久久| 牛牛精品成人免费视频| 亚洲精品中文字| 亚洲精品资源| 国产精品第一区| 欧美亚洲午夜视频在线观看| 亚洲永久网站| 国语自产精品视频在线看一大j8 | 欧美黄色免费| 亚洲视频福利| 亚洲淫性视频| 国产一区在线播放| 美女精品自拍一二三四| 欧美成人网在线| 在线一区二区三区四区| 亚洲视频专区在线| 国产一区二区精品久久99| 美日韩精品免费| 美女久久一区| 亚洲一区二区影院| 欧美一区在线直播| 在线播放亚洲一区| 亚洲欧洲综合另类| 国产精品第一区| 久久亚洲视频| 欧美精品三级在线观看| 亚洲欧美中文另类| 久久精品欧美日韩| 99精品免费视频| 亚洲欧美日韩国产一区二区| 伊人久久噜噜噜躁狠狠躁| 亚洲激情在线| 国产婷婷成人久久av免费高清 | 欧美综合第一页| 久久欧美中文字幕| 一区二区三区四区五区视频| 午夜精品一区二区三区在线| 亚洲电影观看| 中文在线一区| 亚洲第一福利社区| 亚洲美洲欧洲综合国产一区| 国产亚洲福利一区| 亚洲激情亚洲| 国产一区二区三区在线观看免费| 亚洲国产婷婷| 国产喷白浆一区二区三区| 亚洲国产精品国自产拍av秋霞 | 最新日韩精品| 国产日韩欧美在线播放| 亚洲国产一区视频| 国产亚洲欧美一区二区| 亚洲精品在线二区| 国产亚洲欧美激情| 日韩网站在线| 亚洲福利在线视频| 亚洲欧美日本视频在线观看| 亚洲免费观看高清在线观看| 欧美一区2区三区4区公司二百| 一本色道久久综合亚洲精品不卡 | 日韩图片一区| 久久久.com| 午夜精品久久久久久久久久久久久 | 亚洲大片免费看| 国产午夜亚洲精品羞羞网站| 日韩午夜av| 亚洲国产精品一区二区www| 亚洲免费一区二区| 中文av字幕一区| 男女精品视频| 老司机凹凸av亚洲导航| 国产精品嫩草99av在线| 亚洲精品中文在线| 亚洲第一区在线观看| 欧美亚洲三级| 欧美一区二区三区喷汁尤物| 欧美日韩国产一区二区| 亚洲电影观看| 在线色欧美三级视频| 久久成人综合网| 欧美在线观看一区二区| 国产精品日韩欧美| 一本色道88久久加勒比精品 | 99精品视频网| 蜜臀av一级做a爰片久久| 久久久另类综合| 国产亚洲欧美日韩美女| 国产精品99久久不卡二区| 一区二区电影免费观看| 久久尤物视频| 久久只精品国产| 国产在线视频欧美| 先锋影音一区二区三区| 欧美一区二区视频在线观看| 国产精品制服诱惑| 亚洲欧美乱综合| 欧美在线看片|