设计模式七大原则:单一职责原则

设计模式目的

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

打个比方就像盖大厦和小木屋,当功能简单,函数和代码少时,我们能较轻松的直接上手;但如果是像大厦那样,功能复杂,需求可能变化且代码量大时,我们就不能直接上手就来,需要像建筑图纸那样提前规划设计,那设计模式就像软件(程序)的建筑图纸。

设计模式的目的是为了让软件(程序)具有更好的:

代码重用性
相同功能的代码,不用多次编写,降低冗余
可读性
编程规范性, 便于其他程序员的阅读和理解
可扩展性
当需要增加新的功能时,非常的方便,也称为可维护性
可靠性
当我们增加新的功能后,对原来的功能没有影响

  
使程序呈现高内聚,低耦合的特性
模块内部紧密,但模块间依赖小,一者出错不影响他者

面向对象四大好处:可维护、可扩展、可复用、灵活性好。

单一职责原则

单一职责原则(Single responsibility principle),即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,以可能造成职责2执行错误,所需要将类A的粒度分解为A1、A2。

  

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

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

代码示例

        以交通工具的使用为例:

        方案1,违法单一职责原则

public class SingleResponsibility1 {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("汽车");
        vehicle.run("摩托");
        vehicle.run("飞机");
    }
}
//方案1,违法单一职责原则
class Vehicle{
    public  void run(String vehicle){
        System.out.println(vehicle+"在公路上行驶");
    }
}


        方案2,遵守单一职责原则,但是改动很大,要将类分解,且修改客户端

public class SingleResponsibility2 {
    public static void main(String[] args) {
            RoadVehicle roadVehice = new RoadVehicle();
            roadVehice.run("汽车");
            roadVehice.run("摩托");
 
            AirVehicle airVehicle = new AirVehicle();
            airVehicle.run("飞机");
    }
}
//方案2,遵守单一职责原则,但是改动很大,要将类分解,且修改客户端
class RoadVehicle{
    public  void run(String vehicle){
        System.out.println(vehicle+"在公路上行驶");
    }
}
class AirVehicle{
    public  void run(String vehicle){
        System.out.println(vehicle+"在天空上行驶");
    }
}


         方案3,没有对原来类做大的修改,只是增加方法,虽然没有在类这个级别上遵守单一职责原则,但在方法级别上仍然遵守单一职责原则

public class SingleResponsibility3 {
    public static void main(String[] args) {
        Vehicle2 vehicle = new Vehicle2();
        vehicle.run("汽车");
        vehicle.run("摩托");
        vehicle.runAir("飞机");
    }
}
//方案3,没有对原来类对大的修改,只是增加方法
// 虽然没有在类这个级别上遵守单一职责原则,但在方法级别上仍然遵守单一职责原则
class Vehicle2{
    public  void run(String vehicle){
        System.out.println(vehicle+"在公路上行驶");
    }
    public  void runAir(String vehicle){
        System.out.println(vehicle+"在天空上行驶");
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值