国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計原則篇之一(單一職責)

2019-11-17 03:25:22
字體:
來源:轉載
供稿:網友

設計原則篇之一(單一職責)

所謂設計原則,就是在設計時必須遵守的原則。就個人學習過程來看,主要有SOLID和DRY兩大類。那么首先說下SOLID原則。

SOLID主要包括五種原則。單詞中每個字母都代表一種原則。這五種原則分別是:

SRP

TheSingleResponsibilityPRinciple

單一責任原則

OCP

TheOpenClosedPrinciple

開放封閉原則

LSP

TheLiskovSubstitutionPrinciple

里氏替換原則

DIP

TheDependencyInversionPrinciple

依賴倒置原則

ISP

TheInterfaceSegregationPrinciple

接口分離原則

單一職責原則(SRP)

解析:SRP被表述為”一個類應該有且只有一個變化的原因“,單一職責意味著每個類或者方法只做一件事情,該原則也是多數開發人員最容易理解但是也是最容易違反的一個原則。在asp.netMVC中,一個很好的例子,就是不同的顯示接口對應不同的控制器。例如,HomeController就只應包含主頁有關的操作,而ProductController應該只處理產品頁面的操作。

多功能與單變化

對于單功能類來說,比較容易遵循SRP。例如:將繁體中文轉換為簡體中文的工具類。我們來看一個手機(Phone)類的例子,Phone具有2個功能:發短信,打電話。

1 public class Phone{2 3     public void Message() {}4 5 public void MakePhone() {…}6 7 }

我們先來考察一下Phone類的變化點,并將其分為兩類:

1.Phone類的內部細節變化,比如Message和MakePhone方法發生了變化;

2.Phone類整體性的變化,比如Phone類需要增加PlayMovie方法。這個Phone類具有多個變化點,不符合SRP。

進一步抽象

難道每個類都應該只有一個方法嗎?當然不是。我們可以將每個方法提取到抽象中。下面代碼是將方法提取到抽象中。

 1  public interface IMessage 2  3    { 4  5        void MessageMethod(); 6  7    } 8  9    public class Message:IMessage10 11     {12 13         public void MessageMethod(){   }14 15 }16 17  18 19    public interface IMakePhone20 21    {22 23         void MakePhoneMethod();24 25    }26 27    public class MakePhone:IMakePhone28 29     {30 31         public void MakePhoneMethod()  { }32 33     }34 35  36 37    public class Phone38 39    {40 41        private IMessage message;42 43        public void MessageMethod()44 45        {46 47            message.MessageMethod();48 49        }50 51        private IMakePhone makePhone;52 53        public void MakePhoneMethod()54 55        {56 57            makePhone.MakePhoneMethod();58 59        }60 61    }

上述方法將功能點抽取到單一的接口中,將變化封裝到了穩定的接口背后,這樣就避免了底層的變化傳導到高層。如果想更好的運用單一職責原則,就必須理解好C#編程中的抽象。

當下,正是單一職責盛行的時代,每個人都專精于某一個模塊,需要多人協同合作,才能組成絢麗多彩的世界。代碼寫到一定程序,慢慢的我們就需要考慮一些設計原則,當然原則是以實際應用為基礎的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜陵市| 武平县| 攀枝花市| 临高县| 汽车| 开原市| 长阳| 明水县| 武鸣县| 大化| 客服| 四子王旗| 利辛县| 民县| 开化县| 和龙市| 岳池县| 鹤峰县| 郁南县| 沐川县| 阳原县| 孝感市| 房产| 穆棱市| 陇西县| 嵊泗县| 开鲁县| 绩溪县| 安溪县| 桦甸市| 阿鲁科尔沁旗| 息烽县| 淮北市| 三原县| 和顺县| 凤山市| 黑龙江省| 安丘市| 黑水县| 太仆寺旗| 西丰县|