您的位置:首页 > 其它

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

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() + " 在水里游");
}
}

运行结果:

从结果中可以看到,三种不同运动方式的动物都能正常使用自己的方法。

小结

单一职责原则:

  1. 降低了类的复杂度
  2. 提高类的可读性和可维护性
  3. 降低程序变更时引起的风险

七大设计原则汇总:七大设计原则汇总

  • 点赞
  • 收藏
  • 分享
  • 文章举报
lidexi01 发布了11 篇原创文章 · 获赞 1 · 访问量 200 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: