精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

拯救爛慫代碼?我是這么做的

開發 系統
為了讓小貓更好地優化梳理爛慫代碼,老貓花了好幾個晚上整理出來了繪制的方法。接下來,我們一起來看!

一、故事

這幾天的小貓心情還不錯,修完了"冪等事件的bug",填完了"緩存擊穿的坑",前兩天組長交代給他的“整理一份系統現狀報告”任務也算是有了思路,陰霾終于散去。好像一切都朝著好的方向發展了。是的,也該過去了,畢竟這些事情折磨小貓都快個把月了。

這天,小貓提著兩杯咖啡找到了產品經理,本來么,禮多人不怪,這不效果就來了么。

“......整個業務背景呢,其實也就是這樣了,然后后面有啥其他問題,也歡迎隨時問,知無不答”。產品老汪和小貓足足聊了一半個小時,唾沫星子橫飛,似乎還有點意猶未盡。

“嗯嗯,謝謝了,汪哥,耽誤你時間了。”

“沒事兒,不用客氣,不過提醒你一下,當前系統經過太多開發的手了,系統代碼得好好看看,聽說初版本的時候都是外包搞的。你懂得......”

“嗯嗯,好,太感謝了” 小貓連連點頭,老汪的話倒是提醒了他。

內心開始嘀咕,“哎。看來搞定各種模型關系,業務背景也還是不行啊,面對現實吧,爛慫代碼還是得梳理一下的,當前系統的接口定義、以及類的封裝貌似都挺亂的......”

二、開啟“類圖”之旅

說到對系統代碼中的模型梳理,其實最好的方式還是使用UML類圖。上個章節中老貓沒有展開和大家分享UML類圖,一個是由于篇幅的原因,第二個是老貓覺得類圖對于咱們后續閱讀框架源碼以及底層設計模式有著相當大的幫助,所以很有必要將其作為單獨一篇來和大家分享。如下概要:

1.類圖的簡介

類圖是什么呢?比較專業一點的說法:在軟件工程中,類圖是一種靜態的結構圖,描述了系統的類的集合,類的屬性和類之間的關系,可以簡化了人們對系統的理解;類圖是系統分析和設計階段的重要產物,是系統編碼和測試的重要模型。

其實不僅僅是軟件工程中,其他很多時候需要理清復雜關系的時候,咱們也可以用到這種表示方式。接下來,跟著老貓揭開類圖的神秘面紗......

2.類圖的基本屬性

其實類圖還是相當簡單的,類圖只要概括起來就兩個比較重要的點,一個是類,第二個是類和類之間的關系,咱們弄清楚這兩個,其實類圖也就掌握了。啥是類?對于OO程序員來說,這個類不就是咱們日常定義的class么,沒錯,其實就是這概念。其中包含類名、類的屬性、類的方法。

王者榮耀打過吧?老貓用自己比較喜歡的一個英雄“鐘馗”為案例和大家解析一下。如下圖:

classDemo

上圖中咱們可以看到:

  • 類名:最上面的矩形框中即為類名:鐘馗(Zhongkui)
  • 類的屬性:類名下的第一個矩形圖中表示類的屬性,如上鐘馗案例中,其名稱、血條等等信息即為其屬性。
  • 類的方法:在類屬性的下面就是類的方法,其中在鐘馗這個英雄類的方法中包含勾人--hook(),錘人--hammer()等等

上圖中我們可以看到無論是類的前面還是方法的前面其實都有不同的符號,其實這類符號就是作用域的概念。在類圖中,作用域主要有以下幾個:

  • “+”:表示public,對所有的類都可見。
  • “-”:表示private,僅僅只對當前類可見。
  • “#”:表示protected,受保護的屬性或者方法,其子孫類可見。
  • “~”:表示package,表示包內可見
  • “=”:表示默認值,上述案例中可能沒有畫出來。大家概念知道一下即可。
  • “_”: 下劃線,表示當前的這個類的方法或者屬性是靜態的。
  • 斜體:老貓這里沒有畫出來,這里其實表示的是抽象,當然有的時候也會用兩個尖括號包裹來表示抽象,<<我是抽象類or接口>>。

方法和屬性冒號后面所表示的含義也不一樣,方法后面冒號后面的描述例如hammer():boolean,表示的就是返回值為boolean類型,是否錘到人。而屬性的冒號后面則表示的是當前該屬性的類型。

3.類之間的關系

我們再來看一個每個類和類之間的關系。直接看表示方式,如下圖:

classRel

上述圖中,咱們可能需要記住的是各種線條的表示方式。接下來,咱們一一來看。

(1) 泛化(繼承)關系

我們舉一個鴨子繼承鳥類這樣一個例子。我們表示出來的話,如下:

jc

表示方法:空心三角+實線,箭頭指向父類

上圖中我們清晰地看見子類鴨子繼承了父類所有的屬性,當然除此之外,子類還豐富了父類的方法,例如鴨子繼承下蛋的同時擴充了游泳。

小代碼:

public class Bird {
  public String feather;
  public String wing;
  public void layEggs() {

  }
}

public class Duck extends Bird {
  public String feather;
  public String wing;
  public void layEggs() {

  }
  public boolean swim() {
      return true;
  }
}

(2) 實現

抽象了飛翔這么一個接口,然后讓各種不一樣的鳥類進行實現,如下圖:

classImpl

表示方法:空心三角+虛線,箭頭指向待實現的接口

表示實現接口中的所有的方法。

小代碼:

  public interface Fly {
    public void doFly();
  }

  public class WildGoose implements Fly {
    public void doFly() {

    }
  }

(3) 依賴

舉個例子,動物都依賴于空氣,于是咱們就有了下圖:

classyl

表示方法:尖括號+虛線,尖括號指向被依賴的類。

依賴關系表示一個類使用(依賴)另一個類的服務或信息。一般來說,依賴總是單向的,不應該存在雙向依賴。就拿上面的例子來說,動物依賴于空氣,咱們并不能說,空氣依賴于動物,可見依賴是單向的。

小代碼:

public class Animal {
   public void breath(Oxygen oxygen,Water water) {
      oxygen.supply();
      water.supply();
   }
}

public class Oxygen {
  public void supply(){

  }
}

(4) 關聯

說到關聯,種類比較多,但是理解起來還是比較簡單,即一類對象和另外一類對象之間存在某種關系。這種關聯關系分為單項關聯、雙向關聯、自關聯、多重關聯。在面向對象語言中,如果表示存在關聯關系,那么通常會將一個類的對象作為另外一個類的成員變量。

①單向關聯

例如用戶在商城中購買東西之前都需要去設置地址,那么用戶和地址之間就是單向關聯關系。

單項關聯

表示方法:尖括號+實線,尖括號指向用戶的成員變量,即地址。

小代碼:

    public class User {
      private Address address;
      ...
    }
    public class Address{
      ...
    }

②雙向關聯

例如用戶購買商品,商品同時也會被不同的人購買,那么這種行為就是雙向關聯。

雙向關聯

表示方法:實線連接兩個類即可。

小代碼:

   public class User {
     private List<Product> products;
     ...
   }
   public class Product{
     private User user;
   }

③自關聯

關于自關聯,其實我們日常開發中也遇到過,尤其是一些遞歸類的時候,例如樹形結構,大樹下面套小樹。

樹形Tree

小代碼:

  public class Tree {
    private Tree subTree;
  }

④多重關聯

多重關聯關系表示兩個關聯對象在數量上的對應關系。在UML中,對象之間的多重性可以直接在關聯直線上用一個數字或一個數字范圍表示。比如一條河上在某個時間有好幾只鴨子在上面浪,當然也可以沒有。但是在那個時刻對于那只鴨子而言,它只能在一條河里面浪。例子以及數量表示說明如下:

多重

小代碼:

  private class River {
    private Duck[] ducks;
    ....
  }
  public class Duck {

  }

(5) 聚合

主要描述聚合關系,描述的是整體與部分的關系。對于聚合來說,成員對象是整體對象的一部分,當然成員對象也可以脫離整體獨立存在。這么說的話有點抽象了,打個比方,老貓有最近想要組裝一臺臺式電腦,于是我買了顯卡以及主板等等元器件。對于臺式機來說顯卡以及元器件是其一部分,但是顯卡以及主板又可以單獨作為商品進行售賣。于是我們就有了下面這樣一幅示意圖。

聚合

表示方法:空心菱形表示連接待聚合的那個類對象

小代碼:

  public class Computer {
    private KeyBoard keyboard;
    //構造方法注入
    public Computer(KeyBoard keyboard){
       this.keyBoard = keyboard;
    }
  }
  public class KeyBoard {

  }

(6) 組合

組合關系和聚合有點類似,也是描述整體和部分的關系,區別是聚合的話成員對象可以脫離整體單獨存在,但是組合是"同生共死"的組合對象關系。例如公司和部門之間的關系。即為組合關系。如果公司都涼涼了,那么還有部門么?簡單一幅示意圖如下。

組合

表示方法:實心菱形表示連接待組合的那個類對象

小代碼:

  public class Company {
    private  Department department;
    public Company(Department department){
      this.department = department;
    }
  }
  public class Department {

  }

4.綜合案例

若是看到此處,相信大家對類圖的各種表示方式已經了然于胸了吧。那么咱們接下來就來看看老貓繪制出來的類圖關系吧。

案例

大家可以試試看看對照著老貓上面的梳理來讀懂這樣一個真實的模型類圖吧。

5.如何繪制類圖

寫了這么多,相信大家對如何繪制類圖用什么工具還是比較好奇的。

其實在idea中很多時候我們可以直接查看類圖。只要在類名上面右鍵單擊,選擇 Diagrams -> Show Diagram即可展示如下圖:

demo

在上一篇文章中也有很多小伙伴問老貓流程圖是用什么畫的。其實都一樣的,老貓一般繪制這種圖就用兩種工具軟件,一種是drawio,另外一種是wps中的流程圖繪制。當然其實還有其他繪制工具,例如process on等等,大家可以自己去試試。

三、寫在最后

為了讓小貓更好地優化梳理爛慫代碼,老貓花了好幾個晚上整理出來了繪制的方法。其實無論是多么復雜的類,只要我們把握清楚其中的類圖關系,然后再結合上一篇文章中的業務模型對照起來一起看,就很清晰了。當然,前提是需要有足夠的耐心。

當然老貓費勁心血梳理uml的類圖繪制流程其實還有一個原因,就是接下來咱們要開啟“有趣的設計模式之旅”了。小伙伴們,持續關注老貓吧,相信后文更精彩。

責任編輯:趙寧寧 來源: 程序員老貓
相關推薦

2015-08-05 10:50:01

Facebook緩存網頁

2016-02-25 10:46:33

數據排序數據處理谷歌

2022-01-14 14:19:38

ReactTS前端

2020-03-12 07:42:49

代碼程序員

2019-10-08 12:32:07

運維架構技術

2013-11-27 12:40:21

鮑爾默微軟

2023-07-27 13:44:19

業務用戶畫像

2023-06-27 11:57:24

用戶分析挖掘法ABtest

2018-06-10 20:53:53

2014-07-10 09:15:38

負載均衡安全網關

2024-01-18 08:15:05

AIGC知識圖譜大模型

2024-10-15 11:54:38

2022-07-11 11:28:45

數據分析業務消費

2024-11-27 11:44:08

2013-03-29 09:54:05

創業創業者

2025-11-20 08:24:27

2017-08-28 16:33:46

UI界面模式用戶

2018-10-22 09:17:22

數據中心阿里微軟

2020-03-23 10:42:56

團隊協作阿里

2024-09-20 19:28:47

點贊
收藏

51CTO技術棧公眾號

国产成人三级在线观看| 成人羞羞网站| 欧美日韩在线视频一区| 秋霞毛片久久久久久久久| 在线免费看av片| 中文字幕日韩一区二区不卡 | 亚洲在线色站| 精品人妻无码一区二区| 亚洲欧美日韩综合国产aⅴ| 色系列之999| 亚洲精品激情视频| 国产成人亚洲一区二区三区 | 99精品视频99| 欧美xxxx中国| 日韩黄色高清视频| 色婷婷综合在线观看| 性xxxxfreexxxxx欧美丶| 亚洲欧美电影一区二区| 欧洲精品码一区二区三区免费看| 男人天堂av片| 神马午夜一区二区| 久久99精品国产91久久来源| 91国内在线视频| 国产精品国产三级国产传播| 亚洲国产网址| 日韩精品一区二区三区视频| 色婷婷成人在线| 欧美激情护士| 一级中文字幕一区二区| 亚洲一区精彩视频| 久久电影视频| 99久久综合国产精品| 成人午夜在线观看| 中文 欧美 日韩| 免费日韩av片| 91禁国产网站| 国产无码精品在线观看| 欧美 亚欧 日韩视频在线| 视频一区视频二区国产精品| 欧美特级黄色录像| 欧美黄色录像| 亚洲国产精品嫩草影院久久| 伦伦影院午夜理论片| 岛国精品在线| 欧美三级一区二区| 一级黄色香蕉视频| 日本成人片在线| 色综合网站在线| 亚洲 高清 成人 动漫| 成人性生交大片免费看网站| 一区二区三区视频在线看| 中文字幕一区二区中文字幕| 麻豆av免费在线观看| 亚洲欧美在线观看| 日韩视频在线免费播放| 米奇777四色精品人人爽| 国产精品国产成人国产三级| 亚洲精品免费在线看| 五月天婷婷在线视频| 欧美国产激情一区二区三区蜜月| 日韩影片在线播放| av在线中文| 中文字幕一区二区三区不卡在线| 亚洲日本欧美在线| 高h视频在线观看| 亚洲男女毛片无遮挡| 人妻无码一区二区三区四区| 色yeye免费人成网站在线观看| 亚洲乱码国产乱码精品精的特点| 日韩视频在线观看视频| 性xxxfreexxxx性欧美| 夜夜嗨av一区二区三区四季av| 日韩精品一区二区免费| 国产亚洲成av人片在线观看| 欧美日韩中文字幕日韩欧美| 免费裸体美女网站| 成人噜噜噜噜| 亚洲丁香婷深爱综合| 欧美性xxxx图片| 你微笑时很美电视剧整集高清不卡| 亚洲一区二区久久| 欧美大片xxxx| 亚洲黄色视屏| 国产精品99久久久久久久久 | 日韩一区二区三区在线观看| 亚洲成人福利视频| 欧美大片网址| 中文字幕欧美日韩精品| 九九热只有精品| 免费在线观看成人av| 国产精品爽爽爽爽爽爽在线观看| 国产99视频在线| 久久婷婷国产综合精品青草| 一区二区三区三区在线| 国产黄色大片在线观看| 色婷婷综合久久久中文一区二区| 伊人网在线综合| 粉嫩久久久久久久极品| 一区二区三区回区在观看免费视频 | 日韩专区视频| 亚洲丁香久久久| 精品伦精品一区二区三区视频密桃 | 久久久全国免费视频| 久久久久久9| 99国产超薄肉色丝袜交足的后果| 深夜视频在线免费| 最好看的中文字幕久久| 国产男女在线观看| 亚洲成人黄色| 日韩视频一区在线| 日本高清www免费视频| 久久国产麻豆精品| 久久国产精品-国产精品| 欧美69xxx| 色婷婷精品久久二区二区蜜臂av| 黄色三级视频在线播放| 国产一区二区精品久| 久久久久久久久久久久久久久久久久av | 亚洲午夜精品在线观看| 久久99国产精品视频| 欧美激情一区二区三区在线视频观看| 成人黄色免费网| 91在线高清观看| 久久久久久久香蕉| 亚洲欧洲专区| 中文字幕久久亚洲| 无码人妻丰满熟妇奶水区码| 成人av资源在线观看| 经典三级在线视频| 久久亚洲精品中文字幕| 日韩精品免费在线视频| 日本中文字幕网| 国产盗摄精品一区二区三区在线| 视频一区视频二区视频三区视频四区国产| av免费不卡国产观看| 欧美一区二区在线观看| 五月天婷婷丁香网| 日韩电影免费在线观看网站| 免费国产一区| 中文在线а√在线8| 亚洲护士老师的毛茸茸最新章节| 久一视频在线观看| 国产99一区视频免费| 日本黄色播放器| 91麻豆精品| 啊v视频在线一区二区三区| 中文字幕人妻精品一区| 国产精品色哟哟网站| 亚洲综合色在线观看| 欧美丝袜一区| 国产精品一区久久久| a天堂中文在线| 欧美日韩免费在线视频| 中国1级黄色片| 精品一区二区三区av| 五月天色婷婷综合| 成人亚洲精品| 色在人av网站天堂精品| 亚洲高清精品视频| 亚洲第一成人在线| 少妇饥渴放荡91麻豆| 欧美一级一区| 日韩精品国内| 未满十八勿进黄网站一区不卡| 久久久www成人免费精品张筱雨| 国产又粗又猛又黄又爽无遮挡| 亚洲视频在线观看一区| 日本成人在线免费| 亚洲伦伦在线| 色一情一区二区三区四区| 四虎精品永久免费| 九九热这里只有在线精品视 | 高清不卡一区二区| 久久久性生活视频| 国产探花一区在线观看| 国产欧美精品在线| 人妖欧美1区| 亚洲精品色婷婷福利天堂| 中文在线字幕免费观| 亚洲蜜臀av乱码久久精品| 国产+高潮+白浆+无码| 久久精品天堂| 免费观看中文字幕| 六月丁香久久丫| 国产精品久久久久不卡| 超碰最新在线| 亚洲欧美国产日韩天堂区| 亚洲图片欧美在线| 亚洲第一成人在线| 夫妇交换中文字幕| 国产 欧美在线| 国内自拍视频一区| 欧美日韩亚洲一区| 日本亚洲欧洲精品| www国产精品| 国产精品视频成人| www.色在线| 丝袜情趣国产精品| 三级理论午夜在线观看| 欧美一区二区二区| 欧美超碰在线观看| 亚洲电影第三页| 99国产精品无码| av中文字幕一区| 亚洲天堂网站在线| 日本成人在线电影网| 分分操这里只有精品| 欧美激情电影| 欧美在线播放一区二区| 91精品国产乱码久久久竹菊| 国产精品日韩专区| 在线天堂中文资源最新版| 麻豆乱码国产一区二区三区| 男人久久精品| 亚洲国产成人91精品| 国产精品日韩无码| 91电影在线观看| 国产真人真事毛片| 亚洲欧美偷拍另类a∨色屁股| 亚洲区自拍偷拍| 99精品视频免费在线观看| 亚欧精品在线视频| 久久99日本精品| 免费看a级黄色片| 亚洲欧美春色| 国产精品又粗又长| 亚洲一级网站| 黑人巨茎大战欧美白妇| 天天综合久久| 亚洲啪啪av| 欧洲福利电影| 欧美一级片免费观看| 日本国产精品| 精品欧美一区二区精品久久| 伊色综合久久之综合久久| 91色p视频在线| 伊人国产精品| 91视频免费在线| 高清在线一区二区| 成人精品一区二区三区电影黑人| 99re久久| 国产免费一区二区三区在线能观看| 男人皇宫亚洲男人2020| 欧美中文字幕在线| 免费观看成人性生生活片| 日韩免费av在线| www成人在线视频| 国产成人精品免高潮费视频| 日韩成人影音| 国产精品第1页| 精品福利在线| 91久久嫩草影院一区二区| 57pao成人永久免费| 成人国产精品av| 看亚洲a级一级毛片| 91视频免费在线观看| 亚洲综合影院| 国产一区二区三区四区五区加勒比| 欧美顶级毛片在线播放| 欧美中文娱乐网| 日韩精品1区| 在线免费观看一区二区三区| 97视频精品| 久久久久久av无码免费网站下载| 亚洲午夜极品| 欧美韩国日本在线| 免费在线看一区| 伊人免费视频二| 成人精品一区二区三区四区| yy1111111| 久久久久久免费毛片精品| 极品尤物一区二区| 亚洲视频一区二区免费在线观看| 免费在线一区二区三区| 精品久久久久久电影| 在线观看亚洲黄色| 欧美一区二区三区免费在线看| 午夜美女福利视频| 亚洲毛片在线看| 巨大荫蒂视频欧美大片| 国内精品久久久| 91av一区| 国产精品视频入口| 国产日产精品一区二区三区四区的观看方式 | 国产主播欧美精品| 粉嫩av一区二区| 视频在线99| 亚洲特色特黄| 日韩av片网站| 成人精品小蝌蚪| 污污视频网站在线免费观看| 亚洲一区二区在线观看视频| 在线永久看片免费的视频| 日韩一二三区不卡| 国产中文字幕在线视频| 欧美精品一区二区免费| 亚洲人体影院| 99超碰麻豆| 日韩精品四区| 91成人在线观看喷潮教学| 老司机一区二区| 一级性生活毛片| 亚洲精品国产无天堂网2021 | 噜噜噜久久亚洲精品国产品小说| av噜噜在线观看| 久久你懂得1024| 18精品爽视频在线观看| 884aa四虎影成人精品一区| 亚洲av电影一区| 欧美激情精品久久久久久免费印度 | 久草福利在线| 久久久视频在线| 欧美成人精品午夜一区二区| 日本成人三级| 国产欧美成人| 岛国精品一区二区三区| √…a在线天堂一区| 国产伦精品一区二区三区视频网站| 日韩视频免费观看高清完整版| 国产黄色片在线播放| 97国产精品视频| 91在线一区| 国产91porn| 麻豆国产精品视频| 国产精品免费无码| 大桥未久av一区二区三区| 亚洲经典一区二区三区| 久久亚洲影音av资源网| 久久不卡日韩美女| 亚洲成人第一| 日韩成人午夜精品| 37p粉嫩大胆色噜噜噜| 五月婷婷另类国产| 国内爆初菊对白视频| 欧美日韩第一页| 日韩在线精品强乱中文字幕| 亚洲美女自拍偷拍| 国产一区二区三区视频在线播放| 日本裸体美女视频| 欧美日韩国产一级二级| 成人欧美亚洲| 国产精品电影网| 成人久久一区| 污色网站在线观看| 国产精品久久久久久久久久久免费看| 亚洲 国产 日韩 欧美| 亚洲系列中文字幕| 成人黄色在线| 在线观看精品视频| 国产原创一区二区| 欧美片一区二区| 欧美精品一区二区三区蜜臀 | 91久久电影| 一级片免费在线观看视频| 亚洲另类在线一区| 人妻va精品va欧美va| 97成人精品区在线播放| 久久超碰99| 五月天婷婷亚洲| 亚洲精品美腿丝袜| 黄色av一区二区三区| 97在线视频一区| 国产麻豆一区二区三区精品视频| 老熟妇仑乱视频一区二区| 国产精品免费看片| xxxx国产精品| 91成人天堂久久成人| 在线看成人短视频| 加勒比av中文字幕| 亚洲在线成人精品| 全色精品综合影院| 成人黄色生活片| 在线成人亚洲| av中文字幕免费观看| 欧美丰满一区二区免费视频| 青青草原av在线| 欧美一区免费视频| 国产一区二区三区精品视频| 日韩欧美亚洲视频| 中文字幕欧美日韩| 亚洲91网站| 黄色国产小视频| 亚洲毛片av在线| 青青久草在线| 91美女片黄在线观看游戏| 在线日本成人| 亚洲一二三四视频| 精品国产网站在线观看| 日韩中文视频| www.xxx麻豆| 国产精品网友自拍| 欧美一区二不卡视频| 国产精品欧美日韩一区二区| 欧美激情综合色综合啪啪| 精品国产av无码| 日韩欧美国产综合一区| 国产一区二区三区朝在线观看| 喜爱夜蒲2在线| 国产欧美1区2区3区| 亚洲国产精品成人久久蜜臀|