設計模式之關系


類是封裝了數(shù)據(jù)和行為,是面向對象的重要組成部分,它具有相同屬性、操作關系的對象集合的總稱。在軟件系統(tǒng)運行中類將被實例化成對象(Object),對象就是具體的事物。

類圖
使用出現(xiàn)在系統(tǒng)中的不同類來描述系統(tǒng)的靜態(tài)結構,類圖是來描述不同的類之間的關系。
類圖的結構

public class Employee

{

 private String name;

 private int age;

 private String email;

 

 public void modify()

 {

   '''

 }

}

上面的代碼對應的類圖為

類圖

①:一般類圖分為三行,第一行為類名、第二行為類屬性、第三行為類的方法
②:類屬性 可見性 名稱: 類別 [默認值]

可見性:
public +
private -
protected #

③:方法 可見性 名稱(參數(shù)列表)[: 返回類型]

類之間的關系

1、關聯(lián)關系
關聯(lián)關系表示對象與另一個對象之間的聯(lián)系,就好像汽車與輪胎一樣,在UML圖中使用實線連接又關聯(lián)的兩個類。

類圖

關聯(lián)關系下面又有很多中類型,分別為
(1)、雙向關聯(lián)
(2)、單向關聯(lián)
(3)、自關聯(lián)
(4)、對重關聯(lián)
(5)、聚合關系
所謂聚合關系,表示整體與部分的關系。通常定義一個主體后,再來分析這個整體類的組成結構。注意,這里的聚合整體與部分之間的生命周期是沒有相互制約的。例如電腦和顯示器、鼠標、屏幕等。這些成員是可以獨立于整體存在的。
聚合

汽車類里面有引擎,引擎類是獨立于汽車類的,通過對象注入來實現(xiàn)。
(6)、組合關系
組合關系也是表示類之間整體與部分之間的關系,但是組合和聚合是有區(qū)別的,組合中部分與整體是有統(tǒng)一的生命周期,一旦整體的內存被回收,那么部分對象的內存也會被回收。
如下
組合

public class Head

{

  private Mouth mouth;

  public Head()

  {

    mouth=new Mouth();

  }

}

public class Mouth

{

  ...

}

和聚合不太一樣的是,整體的部分象是在整體創(chuàng)建后創(chuàng)建的,如果整體內存被回收,那么部分對象也會被回收。

2、依賴關系
依賴關系是一種使用關系,特定的事物的改變有可能會影響到使用他的該事物。
使用場景
如上圖所示,Driver類中通過參數(shù)傳入Car類的實例對象,通過對象來使用Car類中定義的方法。

依賴關系

3、泛化關系
泛化關系也叫繼承關系,用來描述父類與子類之間的關系。

泛化關系

定義了一個基類Person,有name和age屬性、move和say方法。子類Student不僅繼承了父類還增加了自己的屬性個方法。

4、接口與實現(xiàn)關系
很多語言都引入了接口,但是python沒有接口。一般接口只是定義要實現(xiàn)得方法,而沒有具體得實現(xiàn),當然也不能實例化對象。

接口與實現(xiàn)

類圖實例:
Exp:用戶通過注冊界面輸入個人信息,用戶單擊“注冊”按鈕后將輸入的信息通過一個封裝了
用戶輸入的數(shù)據(jù)的對象(UserDTO)傳遞給操作數(shù)據(jù)庫的數(shù)據(jù)訪問類,為了提高系統(tǒng)的可拓展性,針對不同的數(shù)據(jù)庫使用不同的數(shù)據(jù)訪問類,因此提供數(shù)據(jù)庫訪問類接口,如IUserDAO,每一個具體的數(shù)據(jù)庫訪問類都實現(xiàn)這個接口。
我們可以根據(jù)上面的描述來繪制類圖。

分析:
首先我們要知道題總中都需要哪些類,有注冊類RegisterForm、數(shù)據(jù)傳輸類UserDTO、數(shù)據(jù)庫訪問類MysqlUserDAO、數(shù)據(jù)庫訪問接口類IUserDAO

由于要符合單一職責原則,注冊類只是負責展示注冊界面,允許用戶鍵入信息。所以將用戶數(shù)據(jù)獲取放在UserDTO中。


Exp
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,661評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評論 25 708
  • 2017年7月13日星期四 炎熱 易中暑 今天是特種兵訓練第十九天,日子真心過的快,越是臨近21天越是覺得自...
    clairesh閱讀 230評論 0 0
  • 周三,周老師又開始帶領大家一起學習!這一次,主要是講我們對娃暑假復盤,看到了不同人家的孩子精彩的暑假生...
    春華秋實吧閱讀 158評論 0 1
  • 文/沐菁兒 目錄:賭來的愛情 上一章賭來的愛情(6) 韓陽在新公司的工作很快就上手了,許恒遠真是悔不當初,早知道綁...
    韓安北閱讀 626評論 3 8

友情鏈接更多精彩內容