java设计模式-七大原则

本文最后更新于:4 个月前

设计模式原则

设计原则核心思想:

  1. 找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码放在一起。

  2. 针对接口编程,而不是针对实现编程。

  3. 为了交互对象之间的松耦合设计努力

1
2
3
4
5
6
7
8
设计模式常见的七大原则:
1)单一职责原则
2)接口隔离原则
3)依赖倒置原则
4)里式替换原则
5)开闭原则
6)迪米特原则
7)合成复用原则
  1. 代码重用性

  2. 可读性

  3. 可扩展性

  4. 可靠性

  5. 高内聚低耦合

单一隔离

1
2
3
4
原则上 一个类应该尽量做一件事 一个类继承一个接口 
如果实现类两个职责 当职责一进行修改的时候 很可能回对职责二造成影响
但是一个类继承一个接口会导致开销过大
在接口方法比较少的情况下可以 通过向下兼容 实现方法的单一职责

接口隔离

1
2
如果一个接口方法过多,实现该接口就会需要去实现很多不需要实现的方法。
这个时候我们就应该把接口进行拆分,去实现需要实现的接口即可。

依赖倒转(倒置)

1
2
3
4
5
6
7
8
9
10
11
接口和抽象类的价值在于 设计
高层模块不应该依赖于底层模块
抽象不应该依赖细节,细节应该依赖抽象
面向接口编程
传递的三种方式
1.构造器传递
2.set接口传递
3.接口传递
使用接口或者抽象类的目的是制定好规范。而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成
多了一个缓冲利于程序的扩展和优化

里式替换原则

1
2
3
4
5
6
7
8
问题:在编程中如何正确的实现继承   尽量满足里式替换原则 
子类尽量不要重写父类的方法
做到透明使用
如果子类想使用父类的方法 ,但是有可能会不小心重写了父类的方法 倒是一系列应用 带来了程序的入侵性
所以可以 子类和父类都继承一个新的base类,base类实现了更为基础的代码和方法
这样子类可以放心的重写方法
达到的效果是 所有应用基类的类应该尽量做到透明使用

开闭原则

1
2
3
4
5
6
7
8
9
10
11
12
开闭原则是编程中 最基础最重要的原则

一个软件实体类 模块和函数应该对外扩展开放(对提供方) 对修改关闭(对使用方) 用抽象构建,用实现扩展细节
当我们增加一个功能时候 应该增加代码而不是修改代码 尽量不去修改原有的代码
当软件需要变化时 尽量通过扩展软件实体的行为来实现变化 而不是通过修改已有的代码来实现变化

编程中遵循其他原则以及使用设计模式的目的就是遵循开闭原则

改进思路分析 把创建的Shape类做成抽象类或者接口,并提供一个抽象的draw方法或者接口,让子类去实现即可。
这样有新的图形种类时候 只需要让新的图形去继承Shape 并且实现draw方法即可,这样使用方的代码就不需要修改

满足了开闭原则

迪米特法则

1
2
3
4
一个对象应该对其他的对象保持最少的了解
类与类之间的关系越密切,耦合度越大

一个类里面 除了传递参数依赖类 应该尽量避免出现其他的陌生类,降低耦合度 这样代码修改起来容易

合成服用原则

1
2
3
4
5
6
原则是尽量使用合成/聚合 而不是使用继承

B要想使用A的方法,可以继承于A 但是这样会导致关系太强 耦合度太高
组合: 让B 里面注入一个A
聚合: 让B里面 set 一个A 或者构造器
依赖: 在B里面把A传进来 称之为B依赖A 方法

设计模式类型

1
2
3
4
5
设计模式分为三种类型,共23种
1、创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式
2、适配器模式:桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
3、行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、
备忘录模式、解释器模式、状态模式、策略模式、责任链模式

本博客目前大部分文章都是参考尚硅谷或者马士兵教育的学习资料!