精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

程序員過關(guān)斬將--領(lǐng)導(dǎo)說我的類的職責(zé)不單一

開發(fā) 前端
軟件實(shí)體應(yīng)該是可擴(kuò)展,而不可修改的。也就是說,對(duì)擴(kuò)展是開放的,而對(duì)修改是封閉的。這個(gè)原則是諸多面向?qū)ο缶幊淘瓌t中最抽象、最難理解的一個(gè)。

[[384751]]

“為什么類的職責(zé)要單一化?

“類的職責(zé)單一化很容易嗎?

首先,我要提醒一下看到這篇文章的同學(xué),我認(rèn)為保證類(一定是類嗎?)的單一職責(zé)并不容易

軟件開發(fā)過程中,自古就流傳著幾大規(guī)則,無論如何這里都要和大家闡述一遍

單一職責(zé)原則

一個(gè)類應(yīng)該只有一個(gè)發(fā)生變化的原因

開閉原則

軟件實(shí)體應(yīng)該是可擴(kuò)展,而不可修改的。也就是說,對(duì)擴(kuò)展是開放的,而對(duì)修改是封閉的。這個(gè)原則是諸多面向?qū)ο缶幊淘瓌t中最抽象、最難理解的一個(gè)。

里氏替換原則

所有引用基類的地方必須能透明地使用其子類的對(duì)象,換句話說,子類在任何引用基類的地方都可以替換成子類。

依賴倒置原則

這個(gè)原則說的詳細(xì)一點(diǎn)其實(shí)可以概括為兩點(diǎn):

高層模塊不應(yīng)該直接依賴于底層模塊,應(yīng)該依賴于抽象

抽象不應(yīng)該依賴于具體實(shí)現(xiàn),具體實(shí)現(xiàn)應(yīng)該依賴于抽象

接口隔離原則

程序不依賴于不使用的接口,換句話說,一個(gè)程序只依賴于它需要的接口。

單純從概念上講呢,單一職責(zé)原則可算是最簡單易懂的一種原則了,就像設(shè)計(jì)模式中的單例模式一樣無趣,是這樣嗎?

誰的職責(zé)

說實(shí)話,看過不少講解“職責(zé)單一”設(shè)計(jì)原則的文章,都是以類來闡述。其實(shí)我覺得不對(duì),職責(zé)單一設(shè)計(jì)原則本質(zhì)上是軟件設(shè)計(jì)原則的一種思想,具有指導(dǎo)意義。至于誰的職責(zé)需要單一,是一個(gè)偽命題,不僅僅指面向?qū)ο缶幊讨械念悾到y(tǒng)的模塊,甚至于微服務(wù)在架構(gòu)設(shè)計(jì)中也應(yīng)該遵循此規(guī)則。

在面向?qū)ο笤O(shè)計(jì)的理解中,程序最基本的組成單位是類(class),多個(gè)類組成模塊(module),多個(gè)模塊組成服務(wù)(service),多個(gè)服務(wù)組成系統(tǒng)(system),一般的軟件系統(tǒng)都會(huì)存在以上幾個(gè)概念。

無論是類,還是模塊,還是服務(wù),還是系統(tǒng),我認(rèn)為設(shè)計(jì)的時(shí)候都要保證“單一職責(zé)”。

單一真的容易嗎

說到“單一”職責(zé),每個(gè)人都有不同的看法

  1. class UserInfo 
  2.     //用戶id 
  3.     public int UserId{get ;set ;} 
  4.     //用戶登錄賬號(hào) 
  5.     public string Account{get;set ;} 
  6.     //用戶登錄密碼 
  7.     public string Pwd{get ;set;} 
  8.     //用戶姓名 
  9.     public string Name{get ;set ;} 
  10.  

以上是最常見的用戶信息實(shí)體,你認(rèn)為它職責(zé)單一嗎?說一說,我自己的看法:

站在用戶信息的角度來說,這個(gè)類代表的是用戶信息,它就是單一的,這也是大多數(shù)人的看法,有錯(cuò)嗎?其實(shí)沒錯(cuò)。因?yàn)樵诋?dāng)前場(chǎng)景下,它確實(shí)是這樣。

隨著業(yè)務(wù)的發(fā)展,用戶的信息字段會(huì)越來越多,比如:用戶的年齡,性別,學(xué)歷....等等。看著越來越大的UserInfo類,是否該拆分呢?

這個(gè)時(shí)候我覺得你可以根據(jù)用戶信息的類型來進(jìn)行拆分,畢竟大而全的類其實(shí)并不好。怎么拆分呢?比如:可以根據(jù)用戶登錄場(chǎng)景拆分出用戶認(rèn)證的類型

  1. class UserAuth 
  2.      //用戶id 
  3.     public int UserId{get ;set ;} 
  4.     //用戶登錄賬號(hào) 
  5.     public string Account{get;set ;} 
  6.     //用戶登錄密碼 
  7.     public string Pwd{get ;set;} 

可以根據(jù)用戶信息在系統(tǒng)中的出現(xiàn)頻率和重要度拆分出用戶基本信息和用戶擴(kuò)展信息

  1. class UserBasicInfo 
  2.      //用戶id 
  3.     public int UserId{get ;set ;} 
  4.      //用戶姓名 
  5.     public string Name{get ;set ;} 
  6.     //用戶手機(jī)號(hào) 
  7.     public string Phone{get ;set ;} 
  8.  
  9.     //其他基本屬性 
  1. class UserExtendnfo 
  2. {     
  3.      //用戶郵箱 
  4.     public string Email{get ;set ;} 
  5.     //用戶QQ號(hào) 
  6.     public string QQ{get ;set ;} 
  7.  
  8.     //其他屬性 

當(dāng)然這里我只是舉個(gè)栗子,如果用戶的Email和手機(jī)號(hào)一樣常用,可以把Email屬性提到基本屬性中。

以上只是以用戶信息為例,根據(jù)不同的用途進(jìn)行拆分的一個(gè)栗子。在不同的業(yè)務(wù)背景下,不同的業(yè)務(wù)階段,對(duì)同一個(gè)類的拆分可能會(huì)有很大不同。有的時(shí)候,你所認(rèn)為的"正確“會(huì)隨著系統(tǒng)的發(fā)展慢慢變成”錯(cuò)誤“,當(dāng)然這種”錯(cuò)誤“并不可怕,畢竟系統(tǒng)的架構(gòu)都是慢慢迭代出來的。

總之呢,評(píng)價(jià)一個(gè)類是否一定滿足單一原則,并沒有一個(gè)統(tǒng)一標(biāo)準(zhǔn)和規(guī)范,在實(shí)際的開發(fā)中,也沒有必要進(jìn)行過度設(shè)計(jì),在項(xiàng)目初級(jí),完全可以是一個(gè)滿足業(yè)務(wù)需求的大而全的類,隨著業(yè)務(wù)的發(fā)展,你必然會(huì)經(jīng)歷拆分的過程,這也是軟件發(fā)展的必然階段。

以上只是針對(duì)類這個(gè)最基本的面向?qū)ο髥挝粊砹牧肆模仙侥K以及系統(tǒng)也是一樣的道理,微服務(wù)也是隨著軟件開發(fā)的不斷演進(jìn)而出現(xiàn)的,其實(shí)從職責(zé)上來看,微服務(wù)也是職責(zé)單一原則的產(chǎn)物,而這個(gè)這則單一更多的是傾向于業(yè)務(wù)單一性,并非功能單一性。

那職責(zé)拆分的越細(xì)越好嗎?我不這么認(rèn)為,當(dāng)一個(gè)類或者模塊甚至系統(tǒng),被拆分過細(xì)的時(shí)候,就會(huì)面臨著維護(hù)的問題,拿微服務(wù)來說,當(dāng)微服務(wù)的數(shù)量過多,就會(huì)面臨著治理等一系列問題,這也是K8s要解決的問題之一。

拆分原則

說到底,雖然職責(zé)單一很難在主觀上給予準(zhǔn)確判斷,但是還是有一些通用規(guī)則可以借鑒,這里以類為例

  • 高內(nèi)聚。系統(tǒng)在修改任一功能的時(shí)候,只需要修改一處地方,如果你需要修改多處才能滿足某個(gè)需求,很有可能你的職責(zé)劃分的不合理
  • 屬性過多。當(dāng)一個(gè)類屬性過多的時(shí)候,可以考慮把這個(gè)類進(jìn)行職責(zé)的拆分。而至于多少個(gè)才算多呢?當(dāng)查找某個(gè)屬性令你頭疼的時(shí)候,說明已經(jīng)到了可以拆分的程度了(自己杜撰)
  • 依賴過多。當(dāng)一個(gè)類型中依賴的資源過多的時(shí)候,可以進(jìn)行拆分
  • 獨(dú)立變化。當(dāng)一個(gè)類的某些屬性被大量使用而且會(huì)經(jīng)常變化的時(shí)候,可以考慮把這些屬性進(jìn)行拆分成獨(dú)立的類。

說到職責(zé)單一,這里順便提一下接口的設(shè)計(jì),接口的設(shè)計(jì)更要遵循職責(zé)單一的原則,接口本質(zhì)上是對(duì)業(yè)務(wù)的抽象,不同的業(yè)務(wù)應(yīng)該抽象成不同的接口,以保證每個(gè)類,每個(gè)模塊,每個(gè)系統(tǒng)都可以獨(dú)立擴(kuò)展。

寫在最后

沒有絕對(duì)好的方法可以讓所有人都認(rèn)為你的拆分是正確的“職責(zé)單一”,有的時(shí)候,怎么樣才能職責(zé)單一真是要靠“靈感”

本文轉(zhuǎn)載自微信公眾號(hào)「架構(gòu)師修行之路」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系架構(gòu)師修行之路公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 架構(gòu)師修行之路
相關(guān)推薦

2020-12-29 08:01:22

安全登錄系統(tǒng)

2020-08-25 07:35:07

session分布式抽象

2020-12-15 08:05:02

redis單線程多線程

2020-11-30 08:28:14

高可擴(kuò)展性系統(tǒng)

2020-09-01 08:10:47

高并發(fā)系統(tǒng)程序員

2020-11-03 07:43:24

MQ版本號(hào)程序員

2013-11-05 09:49:10

2012-02-20 10:45:32

布線

2024-08-30 14:25:26

2015-11-23 17:32:19

新程序員程序員

2009-03-26 09:22:05

2012-09-18 10:05:51

程序員我的歌聲里程序員的歌

2017-12-01 17:36:57

聯(lián)想

2020-11-02 07:12:27

程序員上級(jí)領(lǐng)導(dǎo)管理

2010-03-02 10:13:56

程序員面試

2015-09-01 11:17:53

2012-06-25 10:05:10

程序員

2012-05-25 10:54:24

程序員

2009-06-02 13:43:04

程序員定義職場(chǎng)

2013-06-08 14:12:13

程序員招聘
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日本成人动漫在线观看| 制服丝袜第二页| 超鹏97在线| 成人动漫一区二区| 国产成人中文字幕| 久久精品亚洲a| 国产精品毛片av| 在线视频你懂得一区二区三区| 中文字幕色一区二区| 黄频在线免费观看| 免费高清在线一区| 午夜精品一区二区三区在线| 亚洲第一综合网| 97一区二区国产好的精华液| 色94色欧美sute亚洲线路一ni | 不卡av一区二区| 日韩一级大片在线| 成人免费视频久久| 黄网在线免费看| 国产精品白丝在线| 欧美精品欧美精品| www香蕉视频| 免费的成人av| 欧美在线欧美在线| 免费日韩在线视频| 天天综合网91| 尤物精品国产第一福利三区 | 2023国产精品自拍| www.av一区视频| 亚洲综合成人av| 99热这里只有成人精品国产| 久久综合伊人77777蜜臀| 中文字幕xxx| 国产图片一区| 日韩欧美国产三级| 三上悠亚在线一区| 欧美性理论片在线观看片免费| 亚洲尤物在线视频观看| 一区二区三区我不卡| 毛片在线播放网站| 91最新地址在线播放| 成人激情综合网| 正在播放木下凛凛xv99| 久久成人在线| 57pao成人永久免费视频| 欧美日韩黄色一级片| 久久人人爽人人爽人人片亚洲| 久久久精品日韩| 可以在线观看的av网站| 亚洲综合20p| 国产精品久久二区| 欧美性高跟鞋xxxxhd| 中文字幕免费一区二区三区| 欧美日韩在线精品一区二区三区激情综| 国产野外作爱视频播放| 久久久午夜视频| 亚洲欧洲日韩一区二区三区| 久久久久久影院| 天天干天天舔天天射| 亚洲最新av网站| 久久久久久久久丰满| 中文国产亚洲喷潮| 中文字幕第24页| 精品视频免费| 中文字幕日韩专区| 久久成人小视频| 91精品动漫在线观看| 久久精品国亚洲| 久久久久久久久毛片| 欧美精品首页| 97久久超碰福利国产精品…| av资源免费观看| 久久久久91| 国产美女精品视频免费观看| 91麻豆成人精品国产| 国产精品自在欧美一区| 国产精品裸体一区二区三区| 性插视频在线观看| 国产欧美精品日韩区二区麻豆天美| 日韩精彩视频| 国产精品一卡二卡三卡| 亚洲一区二区在线免费看| 僵尸世界大战2 在线播放| 亚洲一区站长工具| 欧美日韩一区二区三区高清 | 日韩中文字幕不卡| 国产美女搞久久| 亚洲国产精品视频在线| 91丨九色丨尤物| 亚洲一区二区在线观| 99久久精品免费观看国产| 亚洲成人av中文| 无码人妻精品一区二区三区66| crdy在线观看欧美| 亚洲成人精品视频在线观看| 自拍偷拍视频亚洲| 欧美激情1区2区3区| 5566成人精品视频免费| 国产精品久久久久久久成人午夜| 成人午夜视频福利| 色婷婷精品国产一区二区三区| 成人在线影视| 色婷婷综合久久| 欧美性猛交xx| 国产精品嫩模av在线| 欧美成人精品在线观看| 中文字幕高清在线免费播放| 国产成人鲁色资源国产91色综| 欧美二区在线看| 亚洲国产精品精华素| 在线一区二区三区做爰视频网站| 国产老头和老头xxxx×| 国产亚洲一卡2卡3卡4卡新区| 欧美精品性视频| 国产精华7777777| 成人av在线资源网站| 在线视频不卡一区二区三区| 黄视频免费在线看| 日韩精品自拍偷拍| 色偷偷男人天堂| 国产精品久久久久久久久久妞妞| 亚洲自拍在线观看| 亚洲麻豆精品| 色美美综合视频| 岛国精品资源网站| 欧美777四色影| 国产日韩在线看片| www.亚洲资源| 一本色道久久综合亚洲91| 午夜不卡久久精品无码免费| 欧美福利在线| 亚洲free性xxxx护士hd| 色老头视频在线观看| 日本二三区不卡| theav精尽人亡av| 亚洲大胆视频| 国产传媒一区二区| 在线播放蜜桃麻豆| 欧美一区二区精品久久911| gv天堂gv无码男同在线观看| 三级亚洲高清视频| 99中文字幕| 欧美性爽视频| 欧美v亚洲v综合ⅴ国产v| 成人在线观看高清| 久草这里只有精品视频| 亚洲精蜜桃久在线| 国产精品伦一区二区| 这里只有精品丝袜| 中文字幕网址在线| 欧美国产日韩亚洲一区| 激情综合网俺也去| 国产精品一区二区三区av麻 | 国产美女在线精品| 波多野结衣激情| 国产日本亚洲| 欧美区在线播放| 亚洲精品综合久久| 无吗不卡中文字幕| 国产艳俗歌舞表演hd| 日日摸夜夜添夜夜添精品视频| 欧美一区二视频在线免费观看| 成人做爰视频www网站小优视频| 亚洲欧美综合精品久久成人| 自拍偷拍校园春色| 中文字幕在线一区| 最好看的中文字幕| 国产欧美一级| 日韩国产精品一区二区| 欧美午夜三级| 欧美成人黑人xx视频免费观看| 精品国产乱码一区二区三 | 欧美性受黑人性爽| 99久久香蕉| 日本精品久久中文字幕佐佐木| 国产精品久久久久久久龚玥菲| 欧美日韩免费高清一区色橹橹| 538精品在线视频| 成人午夜av电影| 日韩 欧美 高清| 99久久99视频只有精品| 99九九视频| 亚洲淫成人影院| 久久精品久久精品亚洲人| 欧日韩在线视频| 在线免费观看日韩欧美| 国产精品成人免费观看| 91丨porny丨首页| 午夜精品中文字幕| 一本不卡影院| 中文精品一区二区三区| 农村少妇一区二区三区四区五区| 日韩美女视频免费看| a级毛片免费观看在线| 亚洲精品电影久久久| 91精品国产乱码久久| 午夜精品久久久久影视| 中国美女黄色一级片| 成人国产精品免费观看| 亚洲综合欧美激情| 99视频精品| 色呦呦网站入口| 自拍偷拍欧美一区| 99理论电影网| jvid一区二区三区| 欧美亚洲午夜视频在线观看| 国产调教视频在线观看| 亚洲视频在线免费看| 亚洲av无码国产精品久久不卡| 日本精品一区二区三区高清| 久久午夜无码鲁丝片| 国产精品色在线观看| 手机在线成人av| 国产一区二区调教| 久久精品影视大全| 久久国产精品毛片| 亚洲色成人www永久在线观看 | 亚洲精品大片| 日韩69视频在线观看| 国产理论电影在线| 久久国产精品免费视频 | 欧美韩国日本一区| 亚洲第一页av| 成人的网站免费观看| 日本女人黄色片| 视频一区欧美日韩| 男人的天堂99| 99国产精品久久久久久久成人热| 性生活免费观看视频| 久久亚洲精品中文字幕蜜潮电影| 欧美男人的天堂| 精品亚洲自拍| 国产日韩亚洲精品| 91麻豆精品激情在线观看最新 | 日韩在线视频观看正片免费网站| 欧洲亚洲在线| 亚洲精品第一国产综合精品| 色香蕉在线视频| 精品久久人人做人人爱| 国产成年妇视频| 日韩视频在线你懂得| 国产成人精品一区二区无码呦| 在线播放视频一区| 国产一区二区三区四区视频 | 亚洲区小说区图片区qvod按摩| 成人免费视频观看视频| 亚洲精品黑牛一区二区三区| 91网免费观看| 日韩免费一级| dy888夜精品国产专区| 超碰一区二区三区| 国产精品久久九九| 久久91在线| 六十路精品视频| 国际精品欧美精品| 亚洲精品免费在线看| 欧美激情偷拍自拍| 国产精品美女在线播放| 一区二区三区在线观看免费| 粉嫩av一区二区三区天美传媒| 亚洲一级毛片| 欧美亚洲黄色片| 免费永久网站黄欧美| 日本成人黄色网| 精久久久久久久久久久| 又黄又爽又色的视频| 成人精品免费网站| av在线网站观看| 国产欧美日本一区二区三区| 欧美日韩色视频| 亚洲一区中文日韩| 亚洲天堂av片| 欧美日韩一区视频| 国产高清在线免费| 亚洲精品黄网在线观看| 91在线看黄| 久99久在线视频| 一个人www视频在线免费观看| 国产精品777| 日韩精品成人| 久久大片网站| 91久久电影| 九九爱精品视频| 日韩激情中文字幕| 久久久久久久久久久影视| 不卡在线观看av| 国产一二三四区在线| 伊人性伊人情综合网| 麻豆久久久久久久久久| 欧美久久久久久蜜桃| 人妻一区二区三区免费| 一区二区三区视频在线| 欧美寡妇性猛交xxx免费| 国产ts一区二区| 欧美.com| 日本亚洲欧洲精品| 国内一区二区三区| 亚洲黄色av网址| 99久久99久久综合| 999福利视频| 精品久久久久人成| 国产色视频在线| 亚洲日韩第一页| 日本伦理一区二区| 国产精品视频网| 欧美午夜寂寞| 国产精品igao激情视频| 日本午夜精品一区二区三区电影| 一级黄色免费视频| 中文字幕亚洲区| 老熟妇仑乱一区二区av| 日韩视频一区二区在线观看| 成人欧美亚洲| 55夜色66夜色国产精品视频| 涩涩屋成人免费视频软件| 视频一区视频二区视频| 99精品国产福利在线观看免费 | 在线观看国产精品91| av丝袜在线| 91免费视频网站| 欧美日韩久久精品| 国产精品97在线| 菠萝蜜视频在线观看一区| 国产精品夜夜夜爽阿娇| 欧美在线一二三| 内衣办公室在线| 午夜精品久久久久久99热软件| 欧美另类中文字幕| 久久av喷吹av高潮av| 六月丁香婷婷色狠狠久久| av电影在线不卡| 福利一区福利二区微拍刺激| 欧美熟妇另类久久久久久不卡 | 欧洲美女女同性互添| 欧美性大战xxxxx久久久| 理论在线观看| 日本aⅴ大伊香蕉精品视频| 奇米影视777在线欧美电影观看| 免费人成在线观看视频播放| 国产一区久久久| 在线观看亚洲网站| 欧美另类久久久品| 亚洲s色大片| 国产一区二区丝袜高跟鞋图片| 精品国产一区二区三区四区| 成人性生生活性生交12| 日本一区免费视频| 一区二区三区黄| 日韩有码在线电影| www.久久爱.com| 欧美另类videosbestsex日本| 国产精品一区二区你懂的| 午夜免费激情视频| 欧美成人女星排名| 超碰97免费在线| 久久99精品久久久久久水蜜桃| 国产精品久久久久久久久久妞妞 | 国产精品久久福利| 一区二区三区日| 久久不射电影网| 永久免费精品视频| 真人抽搐一进一出视频| 97久久精品人人澡人人爽| 欧美男人亚洲天堂| www.日本久久久久com.| 韩国一区二区三区视频| 国产爆乳无码一区二区麻豆| 99久久99久久精品国产片果冻| 欧美三级韩国三级日本三斤在线观看| 亚洲老头老太hd| 日韩在线激情| 成人精品视频在线播放| 久久网站最新地址| 在线播放国产一区| 欧美日韩成人网| 香蕉久久夜色精品国产使用方法| 久久久久久香蕉| 亚洲人成网站色在线观看| 免费的黄色av| 国产成人精品国内自产拍免费看 | 中文字幕国内精品| 日韩精品免费视频一区二区三区 | 日韩国产欧美在线视频| 日韩在线观看免| 亚洲精品v天堂中文字幕 | 在线中文字幕不卡| 国产区在线观看| 狠狠色综合欧美激情| 人妖欧美一区二区| 久久久久无码精品国产| 亚洲免费伊人电影在线观看av| 99久久综合国产精品二区| 永久免费看av| 久久综合九色综合97婷婷女人 | 成人福利av| 91免费视频黄| 久久久久久久久97黄色工厂| a级片在线播放| 日本欧美中文字幕| 欧美日韩亚洲三区|