zoukankan      html  css  js  c++  java
  • java设计模式学习笔记--单一职责原则

    单一职责原则注意事项和细节

    1.降低类的复杂度,一个类只负责一项职责
    2.提高可读性,可维护性
    3.降低变更引起的风险
    4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则,只有类方法数量足够少,才可以在方法级别保持单一职责原则

    初学者写法

    public class SingleResponsibility01 {
    	public static void main(String[] args) {
    		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 + "在公路上运行。。。。");
    	}
    }
    

    遵守单一职责原则1.0写法

    public class SingleResponsibility2 {
    	public static void main(String[] args) {
    		RoadVehicle roadVehicle = new RoadVehicle();
    		roadVehicle.run("摩托车");
    		roadVehicle.run("汽车");
    		
    		AirVehicle airVehicle = new AirVehicle();
    		airVehicle.run("飞机");
    	}
    }
    
    //方案2的分析
    //1. 遵守单一职责原则
    //2. 但是这样做的改动很大,即将类分解,同时修改客户端
    
    class RoadVehicle{
    	public void run(String vehicle) {
    		System.out.println(vehicle + "在地上运行....");
    	}
    }
    
    class AirVehicle{
    	public void run(String vehicle) {
    		System.out.println(vehicle + "在天上运行");
    	}
    }
    

    遵守单一职责原则2.0写法

    public class SingleRespnsibility3 {
    	public static void main(String[] args) {
    		Vihicle vihicle = new Vihicle();
    		vihicle.run("汽车");
    		vihicle.runAir("飞机");
    		vihicle.runWater("轮船");
    	}
    }
    
    //方式3的分析
    //1. 这种修改方法没有对原来的类很大的修改,只是增加方法
    //2. 这里虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然是遵守单一职责
    
    class Vihicle{
    	void run(String vehicle) {
    		System.out.println(vehicle + "在公路上运行。。。");
    	}
    	
    	void runAir(String vehicle) {
    		System.out.println(vehicle + "在天空上运行。。。");
    	}
    	
    	void runWater(String vehicle) {
    		System.out.println(vehicle + "在水里运行。。。");
    	}
    }
    

    三种写法的分析

    1.第一种写法

    第一种写法是新手常用的一种写法。写法简单,但是飞机在公路上运行肯定是不正确的。也就是说,现在一个类负责了两个职责(run方法中,在公路上运行是一个职责,而飞机不在公路上运行,所以飞机需要另一个职责去实现)。

    2.第二种写法

    第二种写法遵守了单一职责原则,但是每次需要不同职责时,都需要创建一个类进行实现,成本过高

    3.第三种写法

    第三种写法虽然没有在类这个级别上遵守单一职责原则,但是在方法上遵守了单一职责原则,当类方法足够少的时候适用

    下一篇链接(java设计模式学习笔记--接口隔离原则):

    https://www.cnblogs.com/windowsxpxp/p/11567743.html

  • 相关阅读:
    不务正业系列-浅谈《过气堡垒》,一个RTS玩家的视角
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 40. Combination Sum II
    138. Copy List with Random Pointer
    310. Minimum Height Trees
    4. Median of Two Sorted Arrays
    153. Find Minimum in Rotated Sorted Array
    33. Search in Rotated Sorted Array
    35. Search Insert Position
    278. First Bad Version
  • 原文地址:https://www.cnblogs.com/windowsxpxp/p/11567513.html
Copyright © 2011-2022 走看看