单一职责(Single Responsibility Principle, SRP)
一个类只负责一项职责,一个功能只负责一项职责。
问题
1 2 3 4 5 6 7 8 9 10 11 12
| public class Animal { public void eat(String animal){ System.out.println(animal + "吃树叶"); } } public class Main { public static void main(String[] args){ Animal animal = new Animal(); animal.eat("马"); animal.eat("牛"); } }
|
现在版本进行迭代,不只是需要吃树叶还需要吃肉。
解决1(类的单一职责)
将动物划分更细为食肉动物和食草动物。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Carnivores{ public void eat(String animal){ System.out.println(animal + "吃肉"); } } class GrassAnimal{ public void eat(String animal){ System.out.println(animal + "吃树叶"); } } public class Main { public static void main(String[] args){ Carnivores carnivores = new Carnivores(); carnivores.eat("马"); GrassAnimal grassAnimal = new GrassAnimal(); grassAnimal.eat("牛"); } }
|
解决2(方法的单一职责)
1 2 3 4 5 6 7 8 9
| public class Animal { public void eat(String animal){ System.out.println(animal + "吃树叶"); }
public void eat2(String animal){ System.out.println(animal + "吃肉"); } }
|
1 2 3 4 5 6 7
| public class Main { public static void main(String[] args){ Animal animal = new Animal(); animal.eat("马"); animal.eat2("牛"); } }
|
本文的栗子很简单,只有一个方法,所以是方法1还是方法2都影响不大。实际情况中的类都要复杂很多,一旦发生职责扩散而需要修改类时,除非这个类非常简单,否则还是遵循单一职责原则。
六大设计原则:
上一篇:JNI - C基础1
下一篇:设计模式六原则 - 依赖倒置原则