開放-封閉原則(OCP:The Open-Closed Principle)
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計,貴池網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:貴池等地區(qū)。貴池做網(wǎng)站價格咨詢:13518219792
開放-封閉原則:軟件實體(類,模塊,函數(shù)等等)應(yīng)該是可以擴展的,但是不可修改的。
設(shè)計的目的便在于面對需求的改變而保持系統(tǒng)的相對穩(wěn)定,從而使得系統(tǒng)可以很容易的從一個版本升級到另一個版本。
大家可能都有這樣的體會,要滿足各種各樣的客戶,并且客戶的需求經(jīng)常變化,程序員就是這樣的辛苦命,整天改過來改過去,特別用一些非面向?qū)ο蟮恼Z言寫的代碼,函數(shù)的參數(shù)變得越來越長,里面的Case情況慢慢增加,函數(shù)變得很大。軟件幾年之后就變得難于理解和維護(hù),軟件的生命周期好像就要終止。如果能夠擴展模塊的功能,同時又不修改原來已經(jīng)測試通過的代碼,那多好??!
這完全是可以實現(xiàn)的,關(guān)鍵是抽象。把可能的變化用抽象來隔離它。面向接口編程,而不是面向?qū)ο缶幊蹋茉鰪姵绦虻撵`活性;如Client類調(diào)用Server類,如果我們希望Client對象使用另外一個不同的Server對象,就必須修改Client中使用Server類的地方;如果Client調(diào)用Server的接口就可以避免這種修改,只要生成新的接口實現(xiàn)類,修改Main等初次使用新子類的地方而不需要修改Client類;使用Strategy模式和Template Method模式是滿足OCP的最常用方法。
如果需要適應(yīng)某種變化就需要對這種變化進(jìn)行抽象,會增加程序的復(fù)雜度。所以設(shè)計人員應(yīng)該熟悉業(yè)務(wù)和了解客戶需求,預(yù)測到需要進(jìn)行抽象的變化。
敏捷建模不建議提前進(jìn)行各種假想的變化抽象,而是當(dāng)變化發(fā)生第一次的時候抽象這種變化,以后同樣的變化就變得很容易。對代碼進(jìn)行重構(gòu)以保持良好的結(jié)構(gòu)是很重要的,每次抽象都不應(yīng)該使軟件變得越來越僵化。這是非面向?qū)ο蟮恼Z言不具備的優(yōu)勢
本文名稱:開放-封閉原則(OCP:TheOpen-ClosedPrinciple)
本文來源:http://aaarwkj.com/article10/pegddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站收錄、網(wǎng)站建設(shè)、微信公眾號、全網(wǎng)營銷推廣、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)