日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

第三章设计模式

發(fā)布時(shí)間:2024/4/15 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三章设计模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 設(shè)計(jì)模式
    • 設(shè)計(jì)模式概述:
    • 介紹:
    • 作用:
    • 設(shè)計(jì)模式的分類
      • 設(shè)計(jì)模式有兩種分類方式。
        • (一)根據(jù)目的劃分
        • (二)根據(jù)作用范圍劃分 :
    • 面對(duì)對(duì)象設(shè)計(jì)原則
      • 1.單一職責(zé)原則:
      • 2.開閉原則
      • 3.里式替換原則
      • 4.依賴倒置原則
      • 5.接口隔離原則
      • 6.迪米特法則
    • 設(shè)計(jì)模式應(yīng)用
      • 簡(jiǎn)單工廠模式
        • 簡(jiǎn)單工廠模式操作
      • 工廠方法模式
        • 工廠方法模式操作
      • 代理模式
        • 靜態(tài)代理
          • 靜態(tài)代理的操作步驟
      • 動(dòng)態(tài)代理
        • 動(dòng)態(tài)代理操作步驟
    • 設(shè)計(jì)模式總結(jié)

設(shè)計(jì)模式

設(shè)計(jì)模式概述:

介紹:

**設(shè)計(jì)模式是人們?cè)陂L(zhǎng)期的軟件開發(fā)中的經(jīng)驗(yàn)總結(jié),是對(duì)某些特定問題的經(jīng)過實(shí)踐檢驗(yàn)的特定解決方法,是軟件設(shè)計(jì)中的“三十六計(jì)”.**

作用:

  • 使開發(fā)者可以更加簡(jiǎn)單方便地復(fù)用 成功的設(shè)計(jì)和體系結(jié)構(gòu)List item
  • 幫助開發(fā)者做出有利于系統(tǒng)復(fù)用的選擇,避免損害系統(tǒng)復(fù)用性的設(shè)計(jì)
  • 使其他開發(fā)者更加容易理解其設(shè)計(jì)思路,便于團(tuán)隊(duì)交流

設(shè)計(jì)模式的分類

目前所說的設(shè)計(jì)模式通常指GOF(Gang of Four 四人組)
包含23種設(shè)計(jì)模式

設(shè)計(jì)模式有兩種分類方式。

(一)根據(jù)目的劃分

1.創(chuàng)建型模式用于描述如何創(chuàng)建對(duì)象其主要的特點(diǎn)是將對(duì)象的創(chuàng)建與使用分離。2.結(jié)構(gòu)型模型用于描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu)3.行為型模式用于描述了或?qū)ο笾g如何相互協(xié)作,共同完成單個(gè)對(duì)象無法獨(dú)立完成的任務(wù)以及如何分配職責(zé)。

(二)根據(jù)作用范圍劃分 :

即根據(jù)設(shè)計(jì)模式主要作用于類上還是主要作用于對(duì)象上來劃分,這種可分為類模式和對(duì)象模式兩種。

1.類模式:用于處理類于子類之間的關(guān)系,這些關(guān)系通過繼承來建立,是靜態(tài)的,在編譯時(shí)刻便確定下來了
2.對(duì)象模式:用于處理對(duì)象之間的關(guān)系,這些關(guān)系可以通過組合或聚合來實(shí)現(xiàn),在運(yùn)行時(shí)是可以變化的,更具動(dòng)態(tài)性。

面對(duì)對(duì)象設(shè)計(jì)原則

設(shè)計(jì)原則有七種分別是

1.單一職責(zé)原則:

單一職責(zé)原則規(guī)定一個(gè)類應(yīng)該有且僅有一個(gè)引起他變化的原因,簡(jiǎn)單來說,一個(gè)類應(yīng)該只負(fù)責(zé)一個(gè)職責(zé),否則類應(yīng)該被拆分。

如果一個(gè)類承擔(dān)太多職責(zé) 會(huì)出現(xiàn)一下兩個(gè)缺點(diǎn):
第一: 一個(gè)職責(zé)的變化可能影響這個(gè)類實(shí)現(xiàn)其他職責(zé)的能力,或者引發(fā)其他職責(zé)故障。
第二:當(dāng)客戶需要該類的某一個(gè)職責(zé)時(shí),不得不將其他不需要的職責(zé)全部都包含進(jìn)來,從而造成亢余或風(fēng)險(xiǎn)。

2.開閉原則

開閉原則是面向?qū)ο笤O(shè)計(jì)中最基礎(chǔ)的設(shè)計(jì)原則,開閉原則規(guī)定一個(gè)實(shí)體軟件,如類,模塊核函數(shù),應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉,其意思是,在程序需要進(jìn)行擴(kuò)展的時(shí)候,不能通過修改已有的代碼實(shí)現(xiàn)變化,而應(yīng)該通過擴(kuò)展軟件實(shí)體的方式實(shí)現(xiàn),如根據(jù)需要重新哦愛生一個(gè)實(shí)現(xiàn)類。想要達(dá)到這樣的效果,這就需要使用接口,面向接口編程。

3.里式替換原則

里式替換原則是面對(duì)對(duì)象設(shè)計(jì)的基本原則之一,是繼承復(fù)用的基石。該原則規(guī)定所有引用基類的地方必須透明的使用其子類的對(duì)象。這個(gè)原則可以判斷繼承關(guān)系是否合理。

4.依賴倒置原則

依賴導(dǎo)致原則的核心思想是:依賴于約定而不依賴于具體實(shí)現(xiàn),即面向接口編程,對(duì)象的依賴關(guān)系有三種傳遞方法

(1)通過構(gòu)造方法傳遞依賴對(duì)象,即構(gòu)造方法的參數(shù)是需要依賴的接口類型。
(2)通過setter方法傳遞依賴對(duì)象,即setter方法的參數(shù)是需要依賴的接口類型。
(3)接口聲明依賴,及接口的參數(shù)是需要依賴的接口類型。

作用:能夠降低客戶于實(shí)現(xiàn)模塊之間的耦合,

5.接口隔離原則

要求盡量將龐大的接口拆分成更小,更具體的接口。讓接口中只包含客戶感興趣的方法。一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小的接口上。要為各個(gè)類建立他們需要的專用接口,而不要試圖去建立一個(gè)龐大的接口供所有依賴他的類去調(diào)用,否則很多實(shí)現(xiàn)類要被迫的去實(shí)現(xiàn)他們不要的方法。

接口的隔離原則和單一原則都是為了提高類的內(nèi)聚性,降低它們之間的耦合度,但兩者是不同的。

  • 單一職責(zé)原則注重的是職責(zé),而接口隔離原則注重的是對(duì)接口的依賴的隔離。
    單一職責(zé)原則主要約束類,他針對(duì)的是程序中的實(shí)現(xiàn)和細(xì)節(jié);而接口隔離原則主要約束接口,主要針對(duì)抽象和程序整體框架的創(chuàng)建。

6.迪米特法則

迪米特法則又稱最少知道原則,是直接一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能的少的與其他實(shí)體發(fā)生相互作用。
####7.合成復(fù)用原則
盡量使用組合聚合的方式,而不是繼承關(guān)系達(dá)到軟件復(fù)用的目的。

繼承復(fù)用是類型的復(fù)用:必須具備is-a關(guān)系才可通過繼承方式進(jìn)行復(fù)用,且從基類繼承而來的實(shí)現(xiàn)是靜態(tài)的,不可能在運(yùn)行期間發(fā)生變化,因此沒有足夠的靈活性。
而合成復(fù)用是has-a關(guān)系,將已有對(duì)象納入到新對(duì)象中使之成為新對(duì)象的一部分,因此新對(duì)象可以調(diào)用已有對(duì)象的功能,使用合成復(fù)用方式,新對(duì)象可以自運(yùn)行期間動(dòng)態(tài)的引用與成分對(duì)象類型相同的實(shí)現(xiàn)。

設(shè)計(jì)模式應(yīng)用

簡(jiǎn)單工廠模式





簡(jiǎn)單工廠模式包含
1。工廠:簡(jiǎn)單模式的核心,負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的邏輯,工廠提供靜態(tài)方法,根據(jù)傳入的參數(shù)創(chuàng)建所需的產(chǎn)品實(shí)例。
2.抽象產(chǎn)品:工廠創(chuàng)建的所有實(shí)例的父類類型,是負(fù)責(zé)描述所有產(chǎn)品的公共接口。可以是接口或抽象類。
.3.具體產(chǎn)品:抽象產(chǎn)品的實(shí)現(xiàn)類,是工廠的創(chuàng)建目標(biāo),工廠創(chuàng)建的實(shí)例就是某個(gè)具體產(chǎn)品類的實(shí)例。

簡(jiǎn)單工廠模式操作

// 創(chuàng)建工廠 public class JDBCFactory {public static JDBC newInstance() {return new MySQLJDBC();}public static JDBC newInstance(String type) {if ("mysql".equals(type)) {return new MySQLJDBC();}else if("oracle".equals(type)) {return new OracleJDBC();}return null;}}//通過類圖創(chuàng)建工廠對(duì)象 重寫工廠中的方法 public class UserService { //添加,修改,刪除.. //private JDBC jdbc=new OracleJDBC();//耦合度高 private JDBC jdbc=JDBCFactory.newInstance("oracle");//添加 public void addUser() {jdbc.Connection();System.out.println("添加用戶成功!"); }}

工廠方法模式



工廠方法模式操作


//1.創(chuàng)建工廠接口 public interface JDBCFactory { public JDBC newInstance();} //工廠實(shí)現(xiàn)類實(shí)現(xiàn)工廠接口 public class MySQLJDBCFactory implements JDBCFactory{ public JDBC newInstance() {return new MySQLJDBC(); }} //在用戶類中創(chuàng)建所需的工廠對(duì)象 public class UserService { //添加,修改,刪除.. private JDBC jdbc; public void setJdbc(JDBC jdbc) {this.jdbc = jdbc; } //添加 public void addUser() {jdbc.Connection();System.out.println("添加用戶成功!"); }} //測(cè)試類 public class TestJDBC { public static void main(String[] args) {//確定數(shù)據(jù)庫類型JDBCFactory factory=new MySQLJDBCFactory();//創(chuàng)建工廠對(duì)象JDBC jdbc=factory.newInstance();//使用工廠對(duì)象,創(chuàng)建JDBC對(duì)象UserService service=new UserService();service.setJdbc(jdbc);//設(shè)置業(yè)務(wù)類中使用的JDBC對(duì)象service.addUser(); }}

代理模式

代理模式包含
1.抽象主題:通過接口或抽象類聲明業(yè)務(wù)方法。
2.真是主題:實(shí)現(xiàn)了抽象主題中的具體業(yè)務(wù),是實(shí)施代理的目標(biāo)對(duì)象,及代理對(duì)象所代表的真是對(duì)象,是最終要引用的對(duì)象,
3.代理:提供了與真實(shí)主題相同的接口,其內(nèi)部含有對(duì)真實(shí)主題的引用,可以訪問,控制或拓展真實(shí)主題的功能。

實(shí)現(xiàn)代理的方式有很多種,總體上分為靜態(tài)代理或動(dòng)態(tài)代理兩種。

  • 靜態(tài)代理有開發(fā)者針對(duì)抽象主題編寫相關(guān)的代理類實(shí)現(xiàn),編譯之后生成代理類的class文件。靜態(tài)代理在編譯時(shí)已經(jīng)實(shí)現(xiàn),代理關(guān)系在編譯期就已經(jīng)綁定,編譯完成后代理類是一個(gè)實(shí)際的class文件。
  • 動(dòng)態(tài)代理是在運(yùn)行時(shí)動(dòng)態(tài)生成的,即編譯完成后沒有實(shí)際的代理類class文件,而是在運(yùn)行動(dòng)態(tài)生成代理類字節(jié)碼,并加載到JVM中。

靜態(tài)代理



靜態(tài)代理的操作步驟






動(dòng)態(tài)代理




動(dòng)態(tài)代理操作步驟






設(shè)計(jì)模式總結(jié)

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的第三章设计模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。