23种设计模式-单一职责原则

Posted 金石不渝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23种设计模式-单一职责原则相关的知识,希望对你有一定的参考价值。

设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据

设计模式常用的七大原则有:

  1. 单一职责原则
  2. 接口隔离原则
  3. 依赖倒转(倒置)原则
  4. 里氏替换原则
  5. 开闭原则
  6. 迪米特法则
  7. 合成复用原则

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种设计模式-单一职责原则的主要内容,如果未能解决你的问题,请参考以下文章

23种设计模式之单一职责原则

Java 23 种设计模式学习

设计模式原则之:单一职责原则SRP

面向对象开发中的七大设计原则和23种设计模式

23种设计模式

23种基本设计模式-概述