摘要:方法比如一個(gè)修改用戶(hù)名和密碼的需求,我們把它寫(xiě)在一個(gè)方法里天津市上述代碼的方法職責(zé)不明確,既有修改用戶(hù)名又修改地址,不符合單一職責(zé)原則。
Android學(xué)習(xí)資源分享合集(1)-視頻資源
簡(jiǎn)介:單一職責(zé)原則(SRP:Single responsibility principle),它規(guī)定一個(gè)類(lèi)應(yīng)該只有一個(gè)發(fā)生變化的原因。所謂職責(zé)是指類(lèi)變化的原因。如果一個(gè)類(lèi)有多于一個(gè)的動(dòng)機(jī)被改變,那么這個(gè)類(lèi)就具有多于一個(gè)的職責(zé)。而單一職責(zé)原則就是指一個(gè)類(lèi)或者模塊應(yīng)該有且只有一個(gè)改變的原因。
單一職責(zé)原則的好處:
● 類(lèi)的復(fù)雜性大大降低,每個(gè)類(lèi)都有清楚的定義。
● 提高可讀性。
● 維護(hù)性高。
● 變更時(shí)風(fēng)險(xiǎn)率降低。
轉(zhuǎn)化到Android開(kāi)發(fā)中也就是我們編寫(xiě)的接口、類(lèi)、方法要使用單一職責(zé)原則,下面通過(guò)這三個(gè)方面來(lái)詳細(xì)了解一下單一職責(zé)原則。
Interface:public interface Weather { //加載某日某城市的天氣 void LoadWeather(String date,String city); //獲取天氣成功 void GetWeatherSuccess(); //獲取天氣失敗 void GetWeatherError(Throwable e); }
從接口本身來(lái)看寫(xiě)的沒(méi)問(wèn)題,但是從單一職責(zé)原則的角度上看是有問(wèn)題的,接口里展示了兩個(gè)職責(zé),一個(gè)是加載數(shù)據(jù),一個(gè)是提示信息。再換個(gè)角度想,相互不影響的方法可以拆分成多個(gè)接口,那我們來(lái)看GetWeatehrSuccess()和GetWeatherError(Throwable e),如果其中一方發(fā)生變化了,那么另一方肯定發(fā)生變化了 ;那么LoadWeather(String date,String city)和其他兩個(gè)方法比較會(huì)發(fā)現(xiàn)相互不影響。所以LoadWeather(String date,String city)可以多帶帶拆分出來(lái)。
所以接口要符合單一職責(zé)。
方法:比如一個(gè)修改用戶(hù)名和密碼的需求,我們把它寫(xiě)在一個(gè)方法里.
private void ChangeUser(String username,String address) { username="abc"; address="天津市"; }
上述代碼的方法職責(zé)不明確,既有修改用戶(hù)名又修改地址,不符合單一職責(zé)原則。每個(gè)方法必須的職責(zé)必須清晰明確,不僅開(kāi)發(fā)簡(jiǎn)單,而且維護(hù)也很容易。
正確的修改如下:
private void ChangeUserName(String username) { username="abc"; } private void ChangeAddress(String address) { address="天津市"; }類(lèi):
類(lèi)的單一職責(zé)原則和接口、方法的單一職責(zé)一樣的,但是我們會(huì)發(fā)現(xiàn)先在項(xiàng)目開(kāi)發(fā)中很多類(lèi)都不太符合,那是因?yàn)轭?lèi)的單一職責(zé)受很多因素的影響,比如說(shuō)項(xiàng)目的周期、技術(shù)人員的水平等等。
所以總結(jié)起來(lái),在開(kāi)發(fā)中,定義的接口和方法一定要做到單一職責(zé),類(lèi)要視情況而定。
我的公眾號(hào)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/70494.html
摘要:首先先祝大家國(guó)慶節(jié)快樂(lè)今天距離為我運(yùn)營(yíng)公眾號(hào)已經(jīng)一個(gè)月了,今天把文章整合一下,希望對(duì)大家有幫助,也謝謝朋友的支持,我會(huì)繼續(xù)堅(jiān)持原創(chuàng),寫(xiě)更好的文章給大家一視頻獲取學(xué)習(xí)資源分享合集二功能篇實(shí)現(xiàn)金額的語(yǔ)音播報(bào)功能基于模式風(fēng)格的封裝之路炫酷動(dòng)畫(huà)跳 showImg(https://segmentfault.com/img/remote/1460000011437678?w=900&h=500);...
摘要:首先先祝大家國(guó)慶節(jié)快樂(lè)今天距離為我運(yùn)營(yíng)公眾號(hào)已經(jīng)一個(gè)月了,今天把文章整合一下,希望對(duì)大家有幫助,也謝謝朋友的支持,我會(huì)繼續(xù)堅(jiān)持原創(chuàng),寫(xiě)更好的文章給大家一視頻獲取學(xué)習(xí)資源分享合集二功能篇實(shí)現(xiàn)金額的語(yǔ)音播報(bào)功能基于模式風(fēng)格的封裝之路炫酷動(dòng)畫(huà)跳 showImg(https://segmentfault.com/img/remote/1460000011437678?w=900&h=500);...
閱讀 3474·2021-10-14 09:42
閱讀 3654·2019-08-26 13:56
閱讀 3822·2019-08-26 11:59
閱讀 1029·2019-08-23 18:00
閱讀 2347·2019-08-23 17:51
閱讀 3645·2019-08-23 17:17
閱讀 1561·2019-08-23 15:11
閱讀 5609·2019-08-23 15:05