java设计模式-七大原则
本文最后更新于:4 个月前
设计模式原则
设计原则核心思想:
找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码放在一起。
针对接口编程,而不是针对实现编程。
为了交互对象之间的松耦合设计努力
1 2 3 4 5 6 7 8
| 设计模式常见的七大原则: 1)单一职责原则 2)接口隔离原则 3)依赖倒置原则 4)里式替换原则 5)开闭原则 6)迪米特原则 7)合成复用原则
|
代码重用性
可读性
可扩展性
可靠性
高内聚低耦合
单一隔离
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、行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、 备忘录模式、解释器模式、状态模式、策略模式、责任链模式
|
本博客目前大部分文章都是参考尚硅谷或者马士兵教育的学习资料!