设计模式(一)认识UML图提升代码阅读与设计能力
目的
几乎是程序员就都知道或者了解设计模式,但大部分小伙伴写代码总是习惯于一把梭。
无论多少业务逻辑就一个类几千行,这样的开发也可以归纳为三步;定义属性、创建方法、调用展示,Done!只不过开发一时爽,重构火葬场。
好的代码不只为了完成现有功能,也会考虑后续扩展。在结构设计上松耦合易读易扩展,在领域实现上高内聚不对外暴漏实现细节不被外部干扰。而这就有点像家里三居(MVC)室、四居(DDD)室的装修,你不会允许几十万的房子把走线水管裸漏在外面,也不会允许把马桶放到厨房,炉灶安装到卫生间。
其实有一部分人并没有仔细阅读过设计模式的相关书籍和资料,但依旧可以编写出优秀的代码。这主要是由于在经过众多项目的锤炼和对程序设计的不断追求,从而在多年编程历程上提炼出来的心得体会。而这份经验最终会与设计模式提到的内容几乎一致,同样会要求高内聚、低耦合、可扩展、可复用。你可能也遇到类似的经历,在学习一些框架的源码时,发现它里的某些设计和你在做开发时一样。
认识UML
a.什么是UML?
UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。
b.为什么要用uml
通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。
c.UML图中有哪些内容,表示什么含义?
整体UML图
符合 | 含义 | 示列 |
---|---|---|
+
|
代表 public | + publicField;String |
-
|
代表 private | - privateField;int |
#
|
代表 protected | # protectedField;double |
~
|
代表 default | ~ defaultField;char |
下划线
|
代表 static | + staticField:char |
*斜体*
|
代表abstract | - privateField;int |
*:后边String*
|
代表属性类型或者返回值 | - privateField;int |
示列
更详细的讲解详见视频教程(建议电脑观看清晰)https://www.bilibili.com/video/BV1eR4y1A726?spm_id_from=333.999.0.0
设计模式(一)认识UML图提升代码阅读与设计能力相关推荐
- 【设计模式】设计模式概述以及UML图
设计模式概述以及UML图 设计模式概述 1. 设计模式的概念 2. 学习设计模式的必要性 3. 设计模式的分类 UML图 1. 什么是UML图 2. 类图的概念和作用 3. 类图的表示法 4. 类与类 ...
- 图形化代码阅读工具——Scitools Understand
Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...
- 设计模式(一)----设计模式概述及UML图解析
1.设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...
- 设计模式——概述、UML图、原则
文章目录 1,设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 学习设计模式的必要性 1.4 设计模式分类 2,UML图 2.1 类图概述 2.2 类图的作用 2.3 ...
- 【设计模式学习01】设计模式概述,UML图,软件设计原则
文章目录 1. 设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 学习设计模式的必要性 1.4 设计模式分类 2. UML图 2.1 类图概述 2.2 类图的作用 2. ...
- 设计模式----组合模式UML和实现代码
2019独角兽企业重金招聘Python工程师标准>>> 一.什么是组合模式? 组合模式(Composite)定义:将对象组合成树形结构以表示'部分---整体'的层次结构.组合模式使得 ...
- js设计模式与绘制UML图 - 打车的面试题
题干描述 打车时,你可以打快车和专车 无论什么车,都有车牌号和车辆名称 打不同的车价格不同,快车每公里 1 元,专车每公里 2 元 打车时,你要启动行程并显示车辆信息 结束行程,显示价格(假定行驶了 ...
- 设计模式----模板方法模式UML和实现代码
2019独角兽企业重金招聘Python工程师标准>>> 一.什么是模板方法模式? 模板方法模式(Template Method) 定义一个操作中算法的骨架,而将一些步骤延迟到子类中. ...
- 类与类关系的UML图与代码表现
一 : 二 : 三 : 四 : 五 : 类与类之间的关系对于理解面向对象具有很重要的作用,存在以下关系: (1)泛化(Generalization) :狗与动物 (空箭头) (2)关联(Associa ...
最新文章
- Linux日志系统-05:案例1-实现临时日志文件滚动分割
- java 异常_Java学习——异常与异常处理
- 查询shared_pool主要部分的使用率
- 深入了解以太坊虚拟机第5部分——一个新合约被创建后会发生什么
- Yii抛出的各种异常
- c 向html页面传值,html页面之间的传值,获取元素和方法的调用
- Android高性能ORM数据库DBFlow入门
- 经典面试题(三):ASP.NET部分----ASP.NET 页面之间传递值的几种方式
- 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——E题 Seek the Joker II
- mysql如何安装sys,linux下如何安装新版的mysql
- 基于块分割及CNN的文档矫正与光照消除方法 (有源码和数据)
- 【口语语言理解】新分类!全总结!最新Awesome-SLU-Survey资源库开源!
- Spring源码之FactoryBean接口的作用和实现原理
- 服务器部署文档模板,完整word版)部署文档模板
- linux centeros 操作系统
- Android开发入门前准备
- 在windows 20003 下IIS6.0支持PHP的配置方
- 请教:使用或移植过xprivacy的请进
- 设置plsql永久注册码
- python应用seo_Python有助于学习SEO吗?