设计模式七大设计原则之单一职责原则
2020-02-29 19:21
411 查看
设计模式七大设计原则之单一职责原则
1.单一职责原则介绍
对类来说,一个类应该只负责一项职责。假如类中有两个职责A和B,如果当其中一个职责的需求发生改变时会导致另一个职责出错,则应该将这个类分解成两个类分别负责职责A和职责B。
2.案例分析
场景:动物都有一个run方法,但是每种动物的运动方式不一样,比如动物分为陆地上跑的,天上飞的,水里游的。如果只有一个动物类就会造成一些问题。下面看看传统的解决方法和单一职责原则的解决方法有什么区别。
传统解决方法:设置一个动物类,在动物类中有个运动的run方法
package com.ldx.designpatternprinciple; public class SimpleResponsebility { public static void main(String[] args) { Animal tiger=new Animal("tiger"); tiger.run(); Animal bird=new Animal("bird"); bird.run(); } } class Animal{ String name; public Animal() { } public Animal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void run(){ System.out.println(this.getName()+" 在陆地上跑"); } }
运行结果:
存在问题 我们可以发现小鸟是在天上飞的,根据单一原则的定义,Animal这个类既负责天上飞的又负责地上跑的还有水里游的各种动物的行为,当你要把run方法修改成某某动物在天上飞,那tiger又出错了,所以要将animal类进行分解,即让animal类遵循单一职责原则。
遵循单一职责原则的解决方法
将animal类分解成AirAnimal,LoadAnimal和WaterAnimal
package com.ldx.designpatternprinciple; public class SimpleResonsebility1 { public static void main(String[] args) { AirAnimal bird = new AirAnimal("bird"); bird.run(); LoadAnimal tiger = new LoadAnimal("tiger"); tiger.run(); WaterAnimal fish=new WaterAnimal("fish"); fish.run(); } } class AirAnimal { String name; public AirAnimal() { } public AirAnimal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void run() { System.out.println(this.getName()+ " 在天上飞"); } } class LoadAnimal { String name; public LoadAnimal() { } public LoadAnimal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void run() { System.out.println(this.getName() + " 在地上跑"); } } class WaterAnimal { String name; public WaterAnimal() { } public WaterAnimal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void run() { System.out.println(this.getName() + " 在水里游"); } }
运行结果:
从结果中可以看到,三种不同运动方式的动物都能正常使用自己的方法。
小结
单一职责原则:
- 降低了类的复杂度
- 提高类的可读性和可维护性
- 降低程序变更时引起的风险
七大设计原则汇总:七大设计原则汇总
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 二 设计模式七大原则之单一职责原则
- 设计模式六大原则之单一职责原则
- 设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则
- [设计模式原则]第一回:单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式(1)单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责(SRP)
- 设计模式六大原则(1):单一职责原则
- 设计模式--单一职责原则(SRP)
- 设计模式原则:单一职责原则
- 每日设计模式之单一职责原则
- 设计模式-单一职责原则
- java 设计模式六大原则(1):单一职责原则
- 设计模式之:单一职责原则
- 设计模式六大原则1-单一职责原则
- android设计模式之单一职责原则
- 设计模式六大原则:单一职责原则
- 设计模式之禅之六大设计原则-单一职责原则
- 设计模式六大原则之一--单一职责