软件设计模式

1.UML

1.1类图表示法

uml类图中,类使用包含类名、属性、方法

属性或方法前的加好和减号表示了这个方法的可见性,可见性的符号有三种:

+表示public

-表示private

#表示protected

1.2 类与类之间关系

关联关系

单向关联

双向关系

自关联

聚合关系

聚合关系是关联关系的一种,是强关联关系,是整体和部分的关系

聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,成员对象可以脱离整体对象独立存在。带空心菱形的实线来表示

组合关系

组合关系表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系

组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在了,部分对象也将不存在,部分对象不能脱离整体对象存在,用带实心菱形的实线来实现

依赖关系

依赖关系是一种使用关系,是对象之间耦合度最弱的一种关联关系,是临时性的关联,在代码中,某个类的方法,通过局部变量、方法的参数或静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责;依赖关系用带箭头的虚线表示,箭头指向被依赖的类

继承关系

是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系;使用空心三角箭头实线表示,箭头从子类指向父类

实现关系

是接口与实现类之间的关系,类中的操作实线了接口中所声明的所有的抽象操作;实现关系用带空心三角箭头虚线来表示,箭头从实现类指向接口

2.软件设计原则

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性

开闭原则

对扩展开发,对修改关闭

要想达到这样的效果,需要使用接口和抽象类

里式代换原则

里式代换原则:任何基类可以出现的地方,子类一定可以出现。通俗理解为:子类可以扩展父类的功能,但不能改变父类原有的功能。换句话,子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法

依赖倒转原则

高层模块不应该依赖底层模块,两者都应该依赖其抽象

抽象不应该依赖细节,细节应该依赖抽象

简单的说就是要求对抽象进行编程,不要对实现进行编程,这样降低了客户与实现模块间的耦合

3.创建型模式

用于描述"怎样创建对象",主要特点"将对象的创建与使用分离"

提供了单例、原型、工厂方法、抽象工厂、建造者

4.结构型模式

结构型模式描述如何将类或对象按某种布局组成更大的结构,分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足"合成复用原则",所以对象结构模式比类结构模式具有更大的灵活性。

结构型模式7种:代理模式、适配器模式、装饰着模式、桥接模式、外观模式、组合模式、享元模式

4.1 代理模式

由于某些原因需要给某对象提供一个代理以控制对该对象的访问,这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。java中的代理按照代理了生成时机不同分为静态代理和动态代理。静态代理在编译器就生成,动态代理在java运行时动态生成。动态代理又有jdk代理和cglib代理。

5.行为模式

用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务

行为型模式

相关推荐
晨米酱12 小时前
JavaScript 中"对象即函数"设计模式
前端·设计模式
数据智能老司机17 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机18 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机18 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机18 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
使一颗心免于哀伤18 小时前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
数据智能老司机2 天前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机2 天前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
烛阴2 天前
【TS 设计模式完全指南】懒加载、缓存与权限控制:代理模式在 TypeScript 中的三大妙用
javascript·设计模式·typescript
李广坤2 天前
工厂模式
设计模式