日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

設(shè)計(jì)模式——類圖以及類與類之間的關(guān)系

 jiffes 2019-02-13

    設(shè)計(jì)模式在程序設(shè)計(jì)上有著很重要的作用,使用設(shè)計(jì)模式可以使得代碼更容易被理解,使得代碼更規(guī)范,真正實(shí)現(xiàn)工程化。

一、用UML表示一個(gè)類


類圖一般是三行的結(jié)構(gòu):

  1. 類名稱
  2. 屬性:格式(可見(jiàn)性 名稱:類型[=缺省值])
  3. 方法:格式(可見(jiàn)性 名稱(參數(shù)列表)[返回類型])
注:在Visio中的畫(huà)的類圖中使用的是C#的數(shù)據(jù)類型,與Java的略有差別。

二、類與類之間的關(guān)系

類與類之間主要有6種關(guān)系,包括依賴,關(guān)聯(lián),聚合,組合,繼承,實(shí)現(xiàn)。他們的耦合度是一次增強(qiáng)的。

1、依賴(Dependency)

    依賴主要體現(xiàn)了一種使用關(guān)系,兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),主要體現(xiàn)為依賴關(guān)系。

    依賴關(guān)系主要有3種表現(xiàn)形式:(以類A中使用了類B為例)

  1. 類B是作為類A的方法參數(shù)
  2. 類B是類A的方法中的局部變量
  3. 在類A中調(diào)用類B的靜態(tài)方法

在依賴中使用的是“虛線+箭頭”。

  1. public class Student {
  2. public void read(Book book){
  3. System.out.println("讀的書(shū)是:" + book.getName());
  4. }
  5. public void eat(Food food){
  6. System.out.println("吃的是:" + food.getName());
  7. }
  8. }


2、關(guān)聯(lián)(Association)

關(guān)聯(lián)主要體現(xiàn)的是一種對(duì)應(yīng)關(guān)系,兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。通常是將一個(gè)類的對(duì)象作為另一個(gè)類的成員變量。

關(guān)聯(lián)關(guān)系的分類:

  1. 單向關(guān)聯(lián)
  2. 雙向關(guān)聯(lián)

(單向關(guān)聯(lián))


(雙向關(guān)聯(lián))

  1. public class Student{
  2. private String id;
  3. private ClassName className;
  4. public Student(String id){
  5. this.id = id;
  6. this.className = new ClassName();
  7. }
  8. }


3、聚合(Aggregation)

聚合是關(guān)聯(lián)關(guān)系的一種,表現(xiàn)了一種弱的“擁有”關(guān)系,關(guān)聯(lián)關(guān)系的對(duì)象之間是相互獨(dú)立的,但是聚合關(guān)系的對(duì)象之間存在著一種包容關(guān)系,體現(xiàn)的是A對(duì)象可以包容B對(duì)象,但是B對(duì)象不是A對(duì)象的一部分。他們之間是“整體-個(gè)體”的關(guān)系。


成員對(duì)象通常作為構(gòu)造方法、Setter方法或業(yè)務(wù)方法的參數(shù)注入到整體對(duì)象中。

  1. public class People{
  2. private Student student;
  3. private Worker worker;
  4. private Farmer farmer;
  5. public People(Student student, Worker worker, Farmer farmer){
  6. this.student = student;
  7. this.worker = worker;
  8. this.farmer = farmer;
  9. }
  10. }


4、組合(Composition)

    組合是一種強(qiáng)的“擁有”關(guān)系,組合中的類之間是“整體-部分”的關(guān)系,“整體”負(fù)責(zé)“部分”的生命周期,“部分”和“整體”的生命周期是一樣的,“部分”單獨(dú)存在是沒(méi)有任何意義的。通常在整體類的構(gòu)造方法中直接實(shí)例化成員類。


  1. public class Bird{
  2. private Wing wing;
  3. public People(){
  4. wing = new Wing();
  5. }


5、繼承(Generalization)

   繼承表示的是類與類之間或者接口與接口之間的父子關(guān)系,在java中使用的是extends關(guān)鍵字。


  1. public class Bird extends Animal{
  2. }


6、實(shí)現(xiàn)(Implementation)

   實(shí)現(xiàn)表示的是一個(gè)類實(shí)現(xiàn)一個(gè)或者多個(gè)接口,在java中使用的是implements關(guān)鍵字。


  1. public class Bird implements Animal{
  2. }



參考文獻(xiàn)

  1. 深入淺出UML類圖(http://www./oobject/201211231.asp)
  2. 設(shè)計(jì)模式中類的關(guān)系(http://blog.csdn.net/zhengzhb/article/details/7187278)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多