网站模板安全管理系统,设计了网站首页,福州手机模板建站,做商城网站要什么手续Java设计模式#xff08;设计模式七大原则、UML类图#xff09; 设计模式的目的设计模式七大原则单一职能原则#xff08;SingleResponsibility#xff09;接口隔离原则#xff08;InterfaceSegreation#xff09;依赖倒转原则#xff08;DependenceInversion#xff0… Java设计模式设计模式七大原则、UML类图 设计模式的目的设计模式七大原则单一职能原则SingleResponsibility接口隔离原则InterfaceSegreation依赖倒转原则DependenceInversion里氏替换原则LiskovSubstitution开闭原则OpenClosed迪米特原则Demeter合成复用原则CompositeReuse UNL类图依赖关系Dependence泛化关系Generalization实现关系Implementation关联关系Association聚合关系Aggregation组合关系Composition 设计模式的目的
提高代码复用性相同的代码进行复用不用多次编写提高代码可读性编程规范并于他人阅读和理解提高代码扩展性设计模式遵循“对扩展开放对修改关闭”便于扩展
整体来讲程序中使用设计模式可以使代码“高内聚、低耦合”。
设计模式七大原则
设计模式原则就是在编程时应当遵守的原则是设计模式的基础也是设计模式为什么这么设计的依据。设计模式通常有7大原则单一职责原则、接口隔离原则、依赖倒转原则、里氏替换原则、开闭原则、迪米特法则、合成复用原则。
单一职能原则SingleResponsibility
简单的来说就是一个类只负责一项职责。注意事项
一个类只负责一项职责降低了类之间的耦合度提高了类代码的可读性与可维护性降低了进行代码变更的风险性。通常情况下我们应当遵守单一原则只有在逻辑足够简单的情况下可以违反单一原则也不建议违反只有在类方法足够少的情况下在方法上保持单一原则。
接口隔离原则InterfaceSegreation
接口隔离原则就是客户端不应该依赖它不需要的接口也就是一个类对另一个类的依赖应该建立在最小的接口上。
举例接口A存在个方法类B实现接口A并实际重写了了方法类C实现接口A并实际重写了方法客户端类D通过接口A依赖了类B和C。问题那么对于类B和类C来说对于接口A的依赖就没有建立在最小接口上。改进需要将接口A拆分为A1并实际重写1-3方法和接口A2并实际重写3-5方法然后类B实现接口A1类C实现接口A2.依赖倒转原则DependenceInversion
高层模块不应该依赖底层模块二者都应该依赖其抽象在Java中抽象就是指接口Interface和抽象类Abstract Class抽象不应该依赖细节细节应该依赖抽象。依赖倒转的中心思想是面向接口编程。依赖倒转原则的设计理念是相对于细节具体实现类的多变性接口和抽象类要稳定得多。以抽象为基础搭建的架构要比以细节搭建的架构稳定得多。使用接口或者抽象类的目的是制定好规范不会涉及任何具体的操作把展示细节交给具体实现类去完成。
里氏替换原则LiskovSubstitution
因为继承会给程序带来侵入性程序的可移植性低。里氏替换的核心思想是所有引用基类的地方都必须透明地使用其子类对象也就是在使用继承时候在子类中尽量不要重写父类的方法。继承实际上会让两个类的耦合性增加在适当的情况下可以通过聚合、组合、依赖来解决。
开闭原则OpenClosed
一个软件应该对扩展开放提供方对修改关闭对使用方。用抽象构建框架用实现扩展细节。当软件需要变化时尽量通过扩展软件实体的行为来实现变化而不是通过修改原有代码来实现变化。
迪米特原则Demeter
一个对象应该和其它对象保持最小的了解类与类的关系越密切耦合度越大。迪米特法则又叫最小知道原则即一个类对自己依赖的类知道越少越好。 也就是说对于被依赖的类不管多么复杂都尽量将逻辑封装在类的内部。对外除了提供public方法外不应该对外泄露任何信息。迪米特法则还有个更简单的定义 至于直接的朋友通信。直接朋友定义我们称为一个类中出现的成员变量、方法参数、方法返回值中的类是该类的直接朋友其余出现在局部变量中的类不是直接朋友。迪米特最总思想就是一个类相关的事情就在该类中解决而不是放在其它类中。
合成复用原则CompositeReuse
程序设计时候尽量采取合成、聚合的方式实现 而不是使用继承。将需要变化的代码和不需要变化的代码分别独立出来不要混淆也就是抽取封装。针对接口编程而不是针对具体实现编程。为了减少交互对象间的轻耦合而设计。
UNL类图
依赖关系Dependence
定义只要在类中用到了对方那么他们之间就存在依赖关系。在类中用到了对方指在类的成员变量、在方法的返回类型、在方法的接受参数类型、在方法中使用到。
泛化关系Generalization
定义泛化关系实际上就是继承关系他就是依赖关系的特例。
实现关系Implementation
定义实现关系实际上就是一个类实现一个接口也是依赖关系的特例。例如A类实现了B接口那么我们就称A和B是实现关系
关联关系Association
定义关联关系就是类类与类之间的联系也是依赖关系的特例。关联关系具有导航性即双向关系和单向关系例如单项一对一关系双向一对一关系。
聚合关系Aggregation
定义 聚合关系就是整体和部分的关系且整体和部分可以分开的。聚合关系是关联关系的特例。
组合关系Composition
定义组合关系是整体和部分的关系但是整体和部分不可以分开的。