设计模式概述
欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot
前言
设计模式的本质是面向对象设计原则的实际运用,
是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解
设计模式的三种分类
创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
结构型模式:把类或对象结合在一起形成一个更大的结构。
行为型模式:类和对象如何交互,及划分责任和算法。
类(Class)
是指具有相同属性、方法和关系的对象的抽象,
它封装了数据和行为,是面向对象程序设计(OOP)的基础,具有封装性、继承性和多态性等三大特性。
接口(Interface)
是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。
它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。
类之间的关系
1.依赖(Dependency)关系是一种使用关系,
它是对象之间耦合度最弱的一种关联方式,是临时性的关联。
在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用
来访问另一个类(被依赖类)中的某些方法来完成一些职责。
2.关联(Association)关系是对象之间的一种引用关系,
用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。
关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。
3.聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,
是 has-a 的关系。
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,
但是成员对象可以脱离整体对象而独立存在。
例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。
4.组合(Composition)关系也是关联关系的一种,
也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 comtains-a 关系。
在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,
部分对象不能脱离整体对象而存在。
例如,头和嘴的关系,没有了头,嘴也就不存在了。
5.继承
设计模式七大原则
1.单一职责
单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。
每个方法,类,框架只做一件事
代码重用性提高,代码可读性提高
此时代码就像一个大纲
2.开闭原则
可以通过“抽象约束、封装变化”来实现开闭原则,
即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中
对扩展开放,对修改关闭
3.接口隔离原则
将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法
使用多个专门的接口,比使用单一的总接口好
4.依赖反转
依赖于抽象接口,不依赖于具体实现。降低程序耦合。
由依赖《箭头向下》,转换为接口《箭头向上》
例:人依赖大米(人吃大米),转换成-->人依赖食物,大米实现食物接口
5.迪米特法则(封装)
从依赖者的角度来说,只依赖应该依赖的对象。
从被依赖者的角度说,只暴露应该暴露的方法。
6.里氏替换原则(is a)
子类可以扩展父类的功能,但不能改变父类原有的功能
子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。
子类对象可以随时随地替换父类对象,替换后不会报错,也不会有业务逻辑问题
7.组合优于继承
类于类之间的关系
1.继承
2.依赖
3.关联
关联的细分
1.组合:关系强
2.聚合:关系弱
继承的缺点:
继承复用破坏了类的封装性
子类与父类的耦合度高