设计模式介绍和单一职责原则的关系(设计模式介绍和单一职责原则)
设计模式的目的
编写软件过程中 ,程序员面临着来自 耦合性 ,内聚性以及可维护性 ,可扩展性 ,重用性 ,灵活性 等多方面的 挑战 ,设计模式是为了让程序(软件) ,具有更好
代码重用性 (即:相同功能的代码 ,不用多次编写) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 可扩展性 (即:当需要增加新的功能时 ,非常的方便 ,称为可维护) 可靠性 (即:当我们增加新的功能后 ,对原来的功能没有影响) 使程序呈现高内聚 ,低耦合的特性设计模式七大原则
设计模式原则,其实就是程序员在编程时 ,应当遵守的原则 ,也是各种设计模式的基础(即:设计模式为什么 这样设计的依据)
设计模式常用的七大原则有:单一职责原则
接口隔离原则
依赖倒转(倒置)原则
里氏替换原则
开闭原则
迪米特法则
合成复用原则
单一职责原则基本介绍 对类来说的,即一个类应该只负责一项职责 。如类 A 负责两个不同职责:职责 1 ,职责 2 。当职责 1 需求变更 而改变 A 时 ,可能造成职责 2 执行错误 ,所以需要将类 A 的粒度分解为 A1 ,A2
案例(代码):
package com.atguigu.principle.singleresponsibility; public class SingleResponsibility1 { public static void main(String[] args) { Vehicle vehicle = new Vehicle(); vehicle.run("摩托车"); vehicle.run("汽车"); vehicle.run("飞机"); } } class Vehicle { public void run(String vehicle) { System.out.println(vehicle + " 在公路上运行...."); } }运行结果:
这个代码违反了单一职责原则 ,不是优秀的代码 。
改进1:
package com.atguigu.principle.singleresponsibility; public class SingleResponsibility2 { public static void main(String[] args) { RoadVehicle roadVehicle = new RoadVehicle(); roadVehicle.run("摩托车"); roadVehicle.run("汽车"); AirVehicle airVehicle = new AirVehicle(); airVehicle.run("飞机"); } } class RoadVehicle { public void run(String vehicle) { System.out.println(vehicle + "公路运行"); } } class AirVehicle { public void run(String vehicle) { System.out.println(vehicle + "天空运行"); } } class WaterVehicle { public void run(String vehicle) { System.out.println(vehicle + "水中运行"); } }运行结果:
优点:
遵守了单一职责原则缺点:
这样做的改动很大 ,将类分解 ,同时修改客户端改进2:
package com.atguigu.principle.singleresponsibility; public class SingleResponsibility3 { public static void main(String[] args) { Vehicle2 vehicle2 = new Vehicle2(); vehicle2.run("汽车"); vehicle2.runWater("轮船"); vehicle2.runAir("飞机"); } } class Vehicle2 { public void run(String vehicle) { System.out.println(vehicle + " 在公路上运行...."); } public void runAir(String vehicle) { System.out.println(vehicle + " 在天空上运行...."); } public void runWater(String vehicle) { System.out.println(vehicle + " 在水中行...."); } }运行结果:
优点:
遵守了单一职责原则 ,而且这种修改方法没有对原来的类做大的修改 ,只是增加方法 ,这里虽然没有在类这个级别上遵守单一职责原则 ,但是在方法级别上 ,仍然是遵守单一职责单一职责原则注意事项和细节
降低类的复杂度,一个类只负责一项职责 。
提高类的可读性 ,可维护性
降低变更引起的风险
通常情况下 ,我们应当遵守单一职责原则,只有逻辑足够简单 ,才可以在代码级违反单一职责原则;只有类中 方法数量足够少 ,可以在方法级别保持单一职责原则 ,上面第三个代码就是这种情况
这篇博客是我在B站看韩顺平老师数据结构和算法的课时的笔记 ,记录一下 ,防止忘记 ,也希望能帮助各位朋友 。创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!