模式模式(一)

2021-10-22 10:34:57 字數 2345 閱讀 8048

顧名思義:乙個類只應該對一項負責

public

class

singleresponsibility

}class

vehicle

}

上述**vehicle類乙個類承擔了所有交通工具run的功能,並不是合理的設計,需要對其進行分離。

public

class

singleresponsibility2

}class

airvehicle

}class

roadvehicle

}class

watervehicle

}

上述**做到了單一原則,乙個類負責各自的領域,但是改動太大了

public

class

singleresponsibility3

}// 方式3的分析

// 1. 未對原來的類做大的修改,只是增加方法

// 2. 在類的級別上未遵守單一職責,但在方法的級別上遵守了單一職責

class

vehicle2

public

void

runair

(string vehicle)

public

void

runwater

(string vehicle)

}

老師介紹了上面三種改進的方法,如果讓我設計會設計成如下方案:

public

class

singleresponsibility4

}inte***ce

vehicles

class

carimplements

vehicles

}class

boat

implements

vehicles

}class

plane

implements

vehicles

}class

vehcileways

}

命名方式有待商榷

讓介面負責的內容盡可能小,大介面拆分為小介面,避免介面浪費

本質就是面向介面程式設計

比如 class a中的某個方法形參為class b ,那麼以後傳入的引數就只能是class b了, 拓展性差。

但是class a中某個方法形參為class b抽象的介面的話,那麼傳入的引數就是該介面的實現類,易於維護。

package com.qxd.principle.inversion;

public

class

dependyinversion

}class

email

}class

person}*

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

public

class

dependyinversion

}//定義介面

inte***ce

ireceiver

class

email

implements

ireceiver

}class

weixin

implements

ireceiver

}class

person

}

上述兩端**對比即可發現兩者的差距

//開啟或者關閉哪個電視

inte***ce

iopenandclose

inte***ce

itv// 實現介面

class

openandclose

implements

iopenandclose

}

class

openandclose2

public

void

open()

}

設計模式(一) 工廠模式

在物件導向程式設計中,最通常的方法是乙個new操作符產生乙個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下,new操作符直接生成物件會帶來一些問題。舉例來說,許多態別物件的創造需要一系列的步驟 你可能需要計算或取得物件的初始設定 選擇生成哪個子物件例項 或在生成你需要的物件之前必須先...

設計模式(一) 工廠模式

設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使 編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合...

設計模式(一) 工廠模式

編寫出來是為了給別人 client 呼叫的 所以,為了簡化 的協作使用及管理維護,必須想盡辦法簡化 邏輯,實現必要的 分離 下面我分別介紹幾種工廠模式。我們使用手機來作為測試,首先上 圖 public class iphone public class huawei public class opp...