版权声明:本文为博主原创文章,未经允许不得转载。 https://blog.csdn.net/qq_24672657/article/details/83018329
记录学习设计模式的过程
#单一职责原则
概念
- 定义:不要存在多于一个导致类变更的原因
- 一个类、接口、方法只负责一项职责
- 优点:、、
案例
单一职责原则很简单,一个方法 一个类只负责一个职责,各个职责的程序改动,不影响其它程序。
这个比较容易理解,就举个一个平常会碰到的情况。
package com.dsdj.design.principle.singleresponsibility;
/**
* @ClassName TestService
* @Description TODO
* @Author dsdj
* @Date 2018/10/9 下午9:36
* @Version 1.0
**/
public class TestService {
public void getPrice(double price,String type){
if ("肉类".equals(type)){
System.out.println("价格是"+price);
}
if ("鸡肉".equals(type)){
System.out.println("价格是"+price);
}
}
}
这是定义的一个获取价格的类。
package com.dsdj.design.principle.singleresponsibility;
/**
* @ClassName Test
* @Description TODO
* @Author dsdj
* @Date 2018/10/11 下午8:16
* @Version 1.0
**/
public class Test {
public static void main(String[] args) {
TestService testService = new TestService();
testService.getPrice(12,"肉类");
testService.getPrice(23.2,"鸡肉");
}
}
这是测试类
根据单一职责原则,我们进行如下的重构
将于鸡肉有关的职责作为一个类
package com.dsdj.design.principle.singleresponsibility;
/**
* @ClassName ChickenService
* @Description TODO
* @Author dsdj
* @Date 2018/10/11 下午8:21
* @Version 1.0
**/
public class ChickenService {
public void getPrice(double price){
System.out.println("猪肉价格是"+price);
}
}
将与肉类有关的职责作为一个类
package com.dsdj.design.principle.singleresponsibility;
/**
* @ClassName PorkService
* @Description TODO
* @Author dsdj
* @Date 2018/10/11 下午8:20
* @Version 1.0
**/
public class PorkService {
public void getPrice(double price){
System.out.println("猪肉价格是"+price);
}
}
测试类在使用的时候就明确职责了
package com.dsdj.design.principle.singleresponsibility;
/**
* @ClassName Test
* @Description TODO
* @Author dsdj
* @Date 2018/10/11 下午8:16
* @Version 1.0
**/
public class Test {
public static void main(String[] args) {
// TestService testService = new TestService();
// testService.getPrice(12,"肉类");
// testService.getPrice(23.2,"鸡肉");
// 重构之后
new ChickenService().getPrice(12.45);
new PorkService().getPrice(34.2);
}
}
接口隔离原则
概念
-
定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖他不需要的接口
-
一个类对一个类的依赖应该建立在最小的接口上
-
建立单一的几口,不要建立庞大臃肿的接口
-
尽量细化接口,接口中的方法尽量少
-
适度原则,一定要适度
-
优点:高内聚,低耦合、可读性
理解
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 这个原则很简单,对于java等语言来说,B和D类依赖“接口I“(图1),但是B并没有使用方法4、5,D没有使用方法2、3,但是因为依赖接口I,所以也需要定义并不使用的方法。 从前端角度来说,一个公共类它可能被不同的其它类引用,但是每个类只需要用到公共类的其中一个方法,但是却需要把公共类全部引入,这样就显得太臃肿。
所以通过把一个大接口拆分成几个小接口,可以使代码更精准,引用更灵活。
总结
- 单一职责原则是对类的约束
- 接口隔离原则是对抽象的约束
- 设计模式的使用要适度,不能过度使用,要结合实际的开发情况。