结构型图:描述系统静态结构,显示系统类之间的静态关系。

行为型图:描述系统的动态属性,显示系统元素如何协作产生满足要求的系统行为。

类图分类名,属性清单,方法清单,性质清单几层

类之间的关系:1 一般化关系:类与类,接口与接口之间继承,类对接口实现。从子类指向父类、extends  implements

关联关系:类与类之间的关系,使一个类知道另一个类的属性和方法,可以双向也可以单向,实例变量实现  Driver类中有car的实例

聚合关系:是关联关系的一种,是整体和个体的关系,如汽车由轮胎,引擎组成。

合成关系:是关联关系的一种,比聚合关系强,要求代表整体的对象负责部分对象的声明周期,合成关系不能共享。

依赖关系:类与类关系单向,并没有实例属性。表示一个类的定义依赖与另一个类的定义。局部变量,方法参量,另一个类静态方法调用。

1、单一职责原则

一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。from:百度百科

2、开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

3、里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。from:百度百科

4、依赖倒转原则(Dependence Inversion Principle)

所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。 from:百度百科

5、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

6、合成复用原则(Composite Reuse Principle)

合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。

7、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。也就是说一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度。

最新文章

  1. mysql命令行参数(转)
  2. 安装win8、ubuntu双系统的过程
  3. python批量制作雷达图
  4. Python socket模拟HTTP请求
  5. MySQL配置文件-my.ini
  6. Spring-----Spring整合Struts2实例
  7. HTML文档中应用css样式的方法总结
  8. CSDN CODE平台,中国版Github简要使用说明
  9. mysql 数据库知识
  10. JavaScript DOM编程艺术-学习笔记(第十章、第十一章)
  11. J2EE struts2MVC应用在线书签1
  12. python 中的%s是什么意思呢?
  13. fastJson反序列化异常,JSONException: expect ':' at 0, actual =
  14. 解决liblapack.so.3: cannot open shared object file: No such file or directory报错
  15. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
  16. Django介绍
  17. C_数据结构_递归实现求阶乘
  18. 如何回收vRealize Automation里被分配出去了的IP地址
  19. CUDA C Programming Guide 在线教程学习笔记 Part 5
  20. FineUI分组显示弹框最新的在最上边

热门文章

  1. 对shell脚本进行加密
  2. Dynamics 365 Document Management
  3. 支持向量机 (二): 软间隔 svm 与 核函数
  4. Scala 学习之路(十)—— 函数 & 闭包 & 柯里化
  5. Spring 之Aop实现日志记录
  6. Android中控件属性详细总结(转载)
  7. 记录微信浏览器里word链接点击没反应的bug
  8. Vue的生命周期函数
  9. ajax 的登录认证
  10. jdk源码--LinkedList