23种设计模式-单一职责原则
Posted 金石不渝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23种设计模式-单一职责原则相关的知识,希望对你有一定的参考价值。
设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据
设计模式常用的七大原则有:
- 单一职责原则
- 接口隔离原则
- 依赖倒转(倒置)原则
- 里氏替换原则
- 开闭原则
- 迪米特法则
- 合成复用原则
2.3 单一职责原则
对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更
而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A
1) 方案 1 [分析说明]
package com.atguigu.principle.singleresponsibility;
public class SingleResponsibility1
public static void main(String[] args)
// TODO Auto-generated method stub
Vehicle vehicle = new Vehicle();
vehicle.run("摩托车");
vehicle.run("汽车");
vehicle.run("飞机");
// 交通工具类
// 方式 1
// 1. 在方式 1 的 run 方法中,违反了单一职责原则
// 2. 解决的方案非常的简单,根据交通工具运行方法不同,分解成不同类即可
class Vehicle
public void run(String vehicle)
System.out.println(vehicle + " 在公路上运行....");
2) 方案 2 [分析说明]
package com.atguigu.principle.singleresponsibility;
public class SingleResponsibility2
public static void main(String[] args)
// TODO Auto-generated method stub
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("摩托车");
roadVehicle.run("汽车");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飞机");
//方案 2 的分析
//1. 遵守单一职责原则
//2. 但是这样做的改动很大,即将类分解,同时修改客户端
//3. 改进:直接修改 Vehicle 类,改动的代码会比较少=>方案 3
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 + "水中运行");
3) 方案 3 [分析说明]
package com.atguigu.principle.singleresponsibility;
public class SingleResponsibility3
public static void main(String[] args)
// TODO Auto-generated method stub
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.run("汽车");
vehicle2.runWater("轮船");
vehicle2.runAir("飞机");
//方式 3 的分析
//1. 这种修改方法没有对原来的类做大的修改,只是增加方法
//2. 这里虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然是遵守单一职责
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 + " 在水中行....");
//方法 2. //.. //.. //...
以上是关于23种设计模式-单一职责原则的主要内容,如果未能解决你的问题,请参考以下文章