一、前言二、单一职责原则2.1、概念
2.2、代码演示 2.2、单一职责原则注意事项和细节三、接口隔离原则
3.1、基本介绍3.2、传统方法的问题和使用接口隔离原则改进3.3、代码演示
一、前言通常很多人都认为设计模式原则是六个,而我这里写了七个。大家不要以为是写错了。多余的话就不说了,往下看就行知道了。 二、单一职责原则 2.1、概念
对于类来说,即一个类应该只负责一项职责。如果类A负责两个不同的职责:职责1、指责2。当职责1需求改更而改变A时,可能会造成职责2执行错误。所以需要将类A分解为A1、A2。 2.2、代码演示
下面举一个交通工具运行的例子。
现在有一个类,用来负责交通工具运行。如下,但是假设现在传递进来的是飞机,就会出现飞机在地上跑这种情况,然而这种情况显然是不对的。
public class Vehicle{
public void run(String name) {
Sysout.out.printfln(name + ":在地上跑");
}
}
解决方案:将每个类的职责分离出来。交通工具接口
public interface Vehicle{
public void run(String name);
}
飞行工具
public class AirVehicle implements Vehicle{
@Override
public void run(String name) {
System.out.println(name + "在天上飞");
}
}
水里交通工具
public class WaterVehicle implements Vehicle{
@Override
public void run(String name) {
Sysout.out.println(name + "在水里跑");
}
}
陆地交通工具
public class LandVehicle implements Vehicle{
@Override
public void run(String name) {
Sysout.out.println(name + "在陆地上跑");
}
}
测试类
public class Test{
public static void main(String[] args) {
LandVehicle lv = new LandVehicle();
lv.run("汽车");
}
}
通过将每个类的职能分离出来,从而实现类的纯粹化,即就是单一职责原则;
2.2、单一职责原则注意事项和细节降低类的复杂度。一个类只负责一项职责。提高类的可读性,可维护性。降低类因为变更而引起的风险。通常情况下,我们应该遵守单一职责原则,只有逻辑足够简单,才可以在代码级别违反单一职责原则。只有类中方法数量足够少,可以在方法级别保持单一职责原则。 三、接口隔离原则 3.1、基本介绍
客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小接口上。 3.2、传统方法的问题和使用接口隔离原则改进
类A通过接口interface依赖B,类C通过·接口interface依赖类D,如果接口interface对于类A和类C来说不是最小的接口,那么类B和类D必须去2实现他们不需要的方法;将接口interface拆分为独立的几个接口,类A和类C分别与他们1需要的接口建立依赖关系。也就是采用接口隔离原则。 3.3、代码演示
在正式开始之前,先举一个有问题的例子,方便理解。ClassB依赖于ClassA,去调用func1();但是只需要调用func1()方法,但是ClassA却要实现接口里所有的方法,所以这样写就会使得Class过于复杂。
public interface Interface{
public void func1();
public void func2();
public void func3();
public void func4();
public void func5();
}
public class ClassA implements Interface{
@Override
public void func1() {
}
@Override
public void func2() {
}
@Override
public void func3() {
}
@Override
public void func4() {
}
@Override
public void func5() {
}
}
public class ClassB{
public void depend1(Interface i) {
i.func1();
}
}
public class Test {
public static void main(String[] args) {
ClassB b= new ClassB();
b.depend1(new ClassA());
}
}
因此,提出了接口隔离原则。其实所谓的接口隔离原则就是将一个接口进行分解,将方法分到不同的接口中去。



