優(yōu)雅編程之這樣重構對象,你就“正匙缓福”了(二十一)

開心一笑

【我從上學以來到現在,一直有2個問題……
問題一:
為什么每次問爸媽要東西的時候倦炒,他們就會說:你還杏苟印;
可是每當我們犯了錯誤的時候蠢正,他們卻說:你都這么大了……
問題二:
為什么剛到某個學校老師會說:別害怕华匾,把學校當成你的家;
可一旦我們犯了錯机隙,老師又說:這么放肆蜘拉,你當學校是你家啊…】

提出問題

項目中如何重構對象?有鹿?旭旭?

解決問題

勵志圖片

以下來自《重構》這本書的幾點總結和自己的一點心得:

Move Method(搬移函數)

“搬移函數”是重構理論的支柱。如果一個類有太多行為葱跋,或如果一個類與另一個類有太多合作而形成高度耦合持寄,就會搬移函數。

Move Field(搬移字段)

如果一個字段娱俺,在其所駐類之外的另一個類中有更多函數使用了它稍味,就會考慮搬移這個字段。

Extract Class(提煉類)

某個類做了應該由兩個類做的事荠卷,建立一個新類模庐,將相關的字段和函數從舊類搬移到新類。

Inline Class(將類內聯化)

某個類沒有做太多的事情油宜,將這個類的所有特性搬移到另一個類中掂碱,然后移除原類。

Hide Delegate(隱藏“委托關系”)

客戶通過一個委托類調用另一個對象慎冤。在服務類上建立客戶所需的所有函數疼燥,用以隱藏委托關系。

例一:

/**
 * 金錢
 */
class Money{

    public String getFlowers(){
        return "999玫瑰";
    }
}

/**
 * 帥哥
 */
class Boy{

    Money money;

    public Money getMoney() {
        return money;
    }

    public void setMoney(Money money) {
        this.money = money;
    }
}

/**
 * 美女
 */
class Girl{

}

男孩想買花給女孩的話蚁堤,需要這么調用:boy.getMone().getFlowers();

重構:

class Boy{

    Money money;

    public Money getMoney() {
        return money;
    }

    public void setMoney(Money money) {
        this.money = money;
    }
    //委托關系在這里醉者,金錢是萬惡之源,要隱藏起來披诗,啦啦啦
    String getFlowers(){
        return money.getFlower();
    }
}

Remove Middle Man(移除中間人)

某個類做了過多的簡單委托動作撬即。讓客戶直接調用受托類。

事實上藤巢,一個類承受太多的委托類搞莺,這時作者建議我們去除中間人,直接調用Money類掂咒。

Introduce Foreign Method(引入外加函數)

你需要為提供服務的類增加一個函數才沧,但你無法修改這個類迈喉。在客戶端類建立一個函數,并以第一參數形式傳入一個服務類實例温圆。

Introduce Local Extension(引入本地擴展)

你需要為服務類提供一些額外函數挨摸,但你無法修改這個類:建立一個新類,使他包含這些額外函數岁歉。讓這個擴展品成為源類的子類或包裝類得运。

例二:

子類重構:

//男孩每天要做的事情很多,很累锅移,他不希望別人再破壞他這些行為
  //但是他又希望有人來幫助他熔掺,于是有了UtilsBoy
  class Boy{

      public String engagement(){
          return "約會中";
      }

      public String sayLove(){
          //女友要求中英文都要說一遍
          return "我愛你(I Love You!)";
      }

      public String loveCall(){
          //女友要求中英文都要說一遍
          return "晚安(Good Night)";
      }

      //以下省略一萬個方法

  }

  //該類是男孩的子類,
  class UtilsBoy extends Boy{

      public UtilsBoy(){
          //構造方法需要委托給男孩
          super();
      }

      public  String getFlower(){
          return "999玫瑰";
      }

      //在這個方法中非剃,我們可以擴展男孩所需的技能
      //一下省略一萬個幫助男孩追女孩方法
  }

  //幸福的女孩置逻,什么都不用做
  class Girl{

  }

**包裝重構:如何包裝重構就不說了!1刚馈券坞!

讀書感悟

來自《遇見未知的自己》

  • 不管你有多愛他(她),多余的擔心是最差的禮物肺素,不如給他(她)祝福恨锚!
  • 什么樣的人最有魅力?我愈來愈覺得倍靡,答案就是猴伶,內心有力量的人。什么叫做“有內在力量”菌瘫?就是遇到困難蜗顽,碰上痛苦時,能夠坦然與自己的負面情緒相處雨让。困難大家都有,痛苦每個人也不缺忿等,只要是人栖忠,這些都是不可避免的。但內在力量強大的人可以不受苦贸街。
  • 所有發(fā)生在我們身上的事件都是一個經過仔細包裝的禮物庵寞。只要我們愿意面對它有時候有點丑惡的包裝,帶著耐心和勇氣一點一點地拆開包裝的話薛匪,我們會驚喜地看到里面珍藏的禮物捐川。
  • 一旦那個令你快樂的事情不復存在,你的快樂也隨之消失逸尖。而喜悅不同古沥,它是由內向外的綻放瘸右,從內心深處油然而生。

其他

如果有帶給你一絲絲小快樂岩齿,就讓快樂繼續(xù)傳遞下去太颤,歡迎轉載,點贊盹沈,頂龄章,歡迎留下寶貴的意見,多謝支持乞封!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末做裙,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子肃晚,更是在濱河造成了極大的恐慌锚贱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陷揪,死亡現場離奇詭異惋鸥,居然都是意外死亡,警方通過查閱死者的電腦和手機悍缠,發(fā)現死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門卦绣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人飞蚓,你說我怎么就攤上這事滤港。” “怎么了趴拧?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵溅漾,是天一觀的道長。 經常有香客問我著榴,道長添履,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任脑又,我火速辦了婚禮暮胧,結果婚禮上,老公的妹妹穿的比我還像新娘问麸。我一直安慰自己往衷,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布严卖。 她就那樣靜靜地躺著席舍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哮笆。 梳的紋絲不亂的頭發(fā)上来颤,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天汰扭,我揣著相機與錄音,去河邊找鬼脚曾。 笑死东且,一個胖子當著我的面吹牛,可吹牛的內容都是我干的本讥。 我是一名探鬼主播珊泳,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拷沸!你這毒婦竟也來了色查?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤撞芍,失蹤者是張志新(化名)和其女友劉穎秧了,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體序无,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡验毡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了帝嗡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶通。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哟玷,靈堂內的尸體忽然破棺而出狮辽,到底是詐尸還是另有隱情,我是刑警寧澤巢寡,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布喉脖,位于F島的核電站,受9級特大地震影響抑月,放射性物質發(fā)生泄漏树叽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一谦絮、第九天 我趴在偏房一處隱蔽的房頂上張望菱皆。 院中可真熱鬧,春花似錦挨稿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祭椰,卻和暖如春臭家,著一層夾襖步出監(jiān)牢的瞬間疲陕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工钉赁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹄殃,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓你踩,卻偏偏與公主長得像诅岩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子带膜,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容

  • 《重構》讀書筆記 總覽 第一部分 第一章從實例程序出發(fā)吩谦,展示設計的缺陷,對其重構可以了解重構的過程和方法膝藕。 第二部...
    白樺葉閱讀 2,395評論 2 5
  • 在對對象的設計過程中式廷,“決定把責任放在哪兒”即使不是最重要的事,也是最重要的事情之一芭挽。 1 Move Method...
    hklbird閱讀 529評論 0 1
  • 一個項目運行久了滑废,經過業(yè)務需求的迭代,開發(fā)人員的變更袜爪,總會產生一些質量不高的代碼蠕趁,要么來源于對某些業(yè)務理解的不太深...
    高廣超閱讀 1,380評論 0 23
  • 閱讀《重構》的筆記獻上妻导。 重構的定義 重構是在不改變軟件可觀察行為的前提下改善其內部結構。 重構的節(jié)奏 以微小的步...
    陳宇明閱讀 11,631評論 13 64
  • 每個人在他人的風景里都是過客怀各,但是一旦遇上那些有趣的人倔韭,就要盡力地讓過客變成熟客,熟客再常常來他的世界中做客瓢对,最后...
    楠風Dawn閱讀 79評論 0 0