七大设计原则(Java版)
介绍软件设计中应该遵循的七大原则,通过demo例子形象讲解每个原则的内容和实现原理,帮助广大处于瓶颈阶段的程序员们蜕变求进,继续往高级工程师、软件架构师的道路迈进。
芒种的农民
从事WEB系统开发工作
展开
-
P7:迪米特法则(LoD)
一、定义:迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.该法则强调了以下两点:第一要义:从被依赖者的角度来说:只暴露应该暴露的方法或者属性第二要义:从依赖者的角度来说:只依赖应该依赖的对象二、学习案例:定义一个Compu...原创 2019-11-29 15:41:25 · 250 阅读 · 0 评论 -
P6:合成复用原则(CRP)
合成复用原则,Composite Reuse Principle,简称CRP.一、定义在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。简单来说就是:尽量使用合成/聚合,尽量不要使用继承。1、合成:合成表示一种强的拥有关系,同生同灭。比如: 一个人新出生的人,人有两个胳膊,胳膊和人就是部分和整体的关系。人去世了,那么胳膊也就没...原创 2019-11-29 11:21:41 · 312 阅读 · 0 评论 -
P5:接口隔离原则(ISP)
接口隔离原则,Interface Segregation Principle,简称ISP一、定义:使用多个专门的接口比使用单一的总接口要好:一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,会出现接口的污染现象。通俗理解,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就...原创 2019-11-29 10:49:43 · 357 阅读 · 0 评论 -
P4:依赖倒转原则(DIP)
一、定义依赖倒置原则(Dependence Inversion Principle,DIP)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。下面通过对面向过程和面向对象的编程思想差异来理解依赖倒转原则:1、面向过程:面向过程的开发模式是上层调用下层,上层依赖于下层,当下层发生变动时上层也要跟着变动,这就会导...原创 2019-11-28 16:59:31 · 245 阅读 · 0 评论 -
P3:里氏替换原则(LSP)
里氏替换原则(Liskov Substitution Principle),简称LSP.一、定义:美国计算机科学Barbara Liskov提出定义如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。引用基类(父类的)地方都可以用子类来替换,但是反过来就不行。比如,香蕉是水果,...原创 2019-11-28 10:10:55 · 221 阅读 · 0 评论 -
P2:开闭原则(OCP)
一、开闭原则简介开闭原则Open-Closed Principle,简称OCP,是面向对象的可复用设计中最重要的设计原则,具体定义如下:一个系统应当对扩展开放,对修改关闭,即软件系统应在不修改原有功能代码的情况下进行扩展(非必要时不轻易修改原有功能实现)。遵循开闭原则的好处:1、测试复用性:不影响原有的测试代码,只需对扩展部分的代码进行增量测试即可;2、功能复用性:提高代码的复用性,避免陷...原创 2019-11-27 11:18:48 · 372 阅读 · 0 评论 -
P1:单一职责原则(SRP)
一、定义类的职责要单一,不要讲过多的职责功能放到一个类中。一个类只负责一个功能领域中的相应职责。如果一个类的所做的事情很多,就难以实现复用,而且各种职责的耦合度会变高。所以,应该将不同职责封装在不同类中,不同的功能变化封装在不同类中。这样,接口的功能比较专一,可读性、复用性都很高,也容易维护。二、设计思路假设我们要设计一个系统,有如下登录、注册、支付等功能,类结构如下: /**...原创 2019-11-26 18:05:45 · 445 阅读 · 0 评论