设计模式之——六大原则和UML类图简介

一、六大原则

设计模式的原则是程序员在编写代码时应该遵守的原则,类似于规范,也是设计模式的基础。当然理论上需要遵守,实际开发中会遇到各种各样的情况,也可以对六大原则进行选择性的遵守。

六大原则分别为:单一职责原则、里式替换原则、依赖倒转原则、接口隔离原则、迪米特法则、开放—封闭原则。

单一职责原则:

定义:对一个类而言,应该仅有一个引起它变化的原因,即一个类应该只负责一项职责。

说明:即对于一个类A而言,它不应该负责多个职责,如一个程序员他不应该即负责写代码又负责系统的维护,这是违背单一职责原则的,应该把该类拆分成多个类,每一个类负责一项职责即可。当然如果在业务逻辑简单的情况下下,类级别的单一职责可以拆分到方法级别上。毕竟小公司的程序员即负责写代码又负责系统维护的也有。

里式替换原则:

定义:所有使用基类(父类)的地方应该都可以使用其子类,即父类可以完成的事,子类也可以。

说明:尽量不要去重写父类的方法,会破坏其接口原有的意义,因为调用者不知道你重写了该方法,例:每个类都是Object的子类,Object类中有一个toString()的方法,假如子类重写该方法并且返回null,这个子类的下一级继承返回的都是null,那么在不同开发人员维护时可能考虑不到这个问题,并且很可能会导致程序崩溃。当然并不是说不可以重写,如果确定这个类是一个不再被继承或该类被重写方法不影响父类原方法的调用,那么可以重写该方法。

依赖倒转原则:

定义:高层模块不应该依赖于底层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。

说明:相对于细节的多变性,抽象要稳定得多,在开发中应该以抽象为基础去搭建架构,具体的细节应该让各个不同的子类去实现,即面向接口编程。
 

接口隔离原则:

定义:一个类对于另外一个类的依赖应该建立在最小的接口上,即客户端不应该依赖于它不需要的接口。

说明:在定义接口方法时应该合理化,尽量追求简单最小,避免接口臃肿。把各种各样的方法都写到一个接口中,其实很多客户端在调用时并不需要,那么可以考虑将该接口拆分成多个独立的接口。

迪米特法则:

定义:一个类应该对其它对象了解的越少越好,也为最少知道原则。

说明:即跟自己所依赖的对象无关的其它对象,不要放在自己的类中,因为类于类的关系越密切,耦合度越高。对于自己所依赖的类,不管它多么复杂,都应该尽量的将其逻辑封装在它的类内部,对外除了提供public方法,不泄露其它信息。例:客户端需要依赖一个Car(车)类,Car类只应该提供一个创建的方法即可,至于复杂的创建过程,应该放到Car的内部完成,不要在客户端暴露出来。

开放—封闭原则:

定义:类、模块和函数应该对扩展开放(对提供方),对修改关闭(对使用放)。

说明:当软件需求变化时,尽量通过拓展的方式来实现需求的变化,而不是通过修改已有的代码来实现变化。

二、UML类图简介

UML是统一建模语言,是一种用于软件系统分析和设计的语言工具,它使用符号描述软件模型中的各个元素和它们之间的关系。

UML类图主要是用来说明类和类之间的关系,讲解设计模式时通常都是使用类图。

类和类之间的关系主要包括:泛化(继承)、实现、依赖、关联、聚合以及组合。

下面将说明各个关系以及UML类图中的符号表示。

工具:我使用的是StarUml,官网下载地址:StarUML   破解工具:链接:https://pan.baidu.com/s/1DbzRXEXXg-7Qqrpr3YSCrw  提取码:n5dt

类:

      

说明:接口和类都分为三行,第一行为类名或接口名,如果是抽象类字体需要倾斜,第二行为属性,格式:权限修饰符:属性名:类型,第三行为方法,格式:权限修饰符:方法名(参数类型 参数名):返回值类型

注:权限修饰符,+(加号):public    #(井号):protect   -(减号):private

接口:

说明:与类类似。

泛化(继承):

说明:继承使用实线+空白三角,三角尖指向实现的类,即父类。

实现:

说明:实现使用虚线+空白三角,三角尖指向实现的接口,即父接口。

关联:

说明:关联是一种比较强的关系,表现在一个类是另外一个类的成员变量,单向关联则是实现+箭头,箭头指向被关联的类(即成员变量中的类),双向关联则无箭头。

依赖:

说明:依赖是一种较弱的关系,表现在一个类是另外一个类的方法参数或返回值,依赖是一个虚线+箭头,箭头指向被依赖的类。

聚合:

说明:聚合关系是一种特殊的关联关系,聚合关系强调的是整体和部分的关系,其中部分可以脱离整体而存在。例如鸟群是一个整体,鸟群中的鸟可以脱离整体而存在。聚合使用一条直线+一个空白菱形,空白菱形指向整体。

组合:

说明:组合关系也是一种特殊的关联关系,与聚合类似,强调整体与部分的关系,不过部分是无法脱离整体而存在。如人和头的关系,人和头共生共死,它们的生命周期相同,人是不能离开头而存在,头也必须在人上。组合使用一条直线+一个实心菱形,实心菱形指向整体。

注:

1.在设计模式中很多时候聚合和关联的关系很难区分,不过这并不影响对设计模式的理解。

2.整体和部分的关系并不一定是单个和多个,请好好理解,鸟群和鸟是整体-部分的关系,人和身体部件也是整体-部分的关系。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值