单一职责原则
七种设计原则
为了提高代码的可重用性,可读性,可靠性,可扩展性,高内聚,低耦合,提出了23种设计模式。
而编写设计模式则需遵守七大原则
1)单一职责原则
2)接口隔离原则
3)依赖倒置原则
4)开闭原则
5)里氏替换原则
6)迪米特法则
7)组合及复用原则
单一职责原则
定义
即一个类负责一项职责。
示例
//单一职责原则示例1
public class SingleResponseblity {
public static void main(String[] args) {
Vehicle vehicle=new Vehicle();
vehicle.run("小汽车");
vehicle.run("摩托车");
vehicle.run("飞机");//这个例子说明这个run方法违反了单一职责原则
}
}
class Vehicle{
public void run(String vehicle){
System.out.println(vehicle+"在公路上疾驰.................");
}
}
//单一职责原则示例二
/*
* 示例分析
* 1.满足了单一职责原则
* 2.改动太大
* 3.改进方案,直接修改vehicle类==》参考类3
* */
public class SingleResponseblity2 {
public static void main(String[] args) {
WaterVehicla wv=new WaterVehicla();
RoadVehicla rv=new RoadVehicla();
AirVehicla av=new AirVehicla();
wv.run("轮船");
rv.run("汽车");
av.run("飞机");
}
}
class WaterVehicla {
public void run(String vehicle) {
System.out.println(vehicle + "在水种上疾驰........");
}
}
class RoadVehicla {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上疾驰........");
}
}
class AirVehicla {
public void run(String vehicle) {
System.out.println(vehicle + "在天空上疾驰........");
}
}
//单一职责原则示例3
/*
*示例3分析
* 1.修改方法未对原来的类做大的修改。只是增加方法
* 2.虽然没有在类这个级别上遵守单一职责原则,但是在方法的级别上遵守了单一职责原则
*
* */
public class SingleResponseblity3 {
public static void main(String[] args) {
Vehicle2 vehicle2=new Vehicle2();
vehicle2.run("汽车");
vehicle2.runAir("飞机");
vehicle2.runWater("轮船");
}
}
class Vehicle2 {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上疾驰.................");
}
public void runWater(String vehicle) {
System.out.println(vehicle + "在水中疾驰.................");
}
public void runAir(String vehicle) {
System.out.println(vehicle + "在空中疾驰.................");
}
}
第三种示例虽未在类上遵守单一职责原则,但是在方法上遵守了单一职责原则,但是这种写法仅限于方法比较少及简单的类。
单一职责原则总结
1)一个类只负责一项职能,降低了类的复杂度
2)提高了类的可读性及可维护性
3)降低变更引起的风险
4)通常情况下我们都要遵守单一职责原则,但是在逻辑简单的类中,可在方法层遵守单一职责原则(复杂拆类,简单拆方法)