设计模式的目的
编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好
代码重用性 (即:相同功能的代码,不用多次编写)
可读性 (即:编程规范性, 便于其他程序员的阅读和理解)
可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)
可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)
使程序呈现高内聚,低耦合的特性分享金句:
设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要”
Scott Mayers 在其巨著《Effective C++》就曾经说过:C++老手和 C++新手的区别就是前者手背上有很多伤疤
设计模式七大原则
设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)
- 单一职责原则
- 接口隔离原则
- 依赖倒转(倒置)原则
- 里氏替换原则
- 开闭原则
- 迪米特法则
- 合成复用原则
单一职责原则
对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2
package com.xx.single;
/**
* 分析:交通工具摩托车可以在路上跑,但是飞机和船不行。违反了单一职责原则。
*/
public class Vehicle {
public void run(String vehecle){
System.out.println(vehecle+"在公路上跑");
}
}
class Test{
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("摩托车");
vehicle.run("飞机");
vehicle.run("船");
}
}
按单一职责原则:
package com.xx.single;
/**
* 分析:交通工具摩托车可以在路上跑,但是飞机和船不行。违反了单一职责原则。
*/
public abstract class Vehicle {
public abstract void run(String vehecle);
}
class WaterVehicle extends Vehicle{
@Override
public void run(String vehecle) {
System.out.println(vehecle+"在水里跑!");
}
}
class LandVehicle extends Vehicle{
@Override
public void run(String vehecle) {
System.out.println(vehecle+"在公路上跑!");
}
}
class SkyVehicle extends Vehicle{
@Override
public void run(String vehecle) {
System.out.println(vehecle+"在天上飞!");
}
}
/**
* 修改过后:每一个类负责一种事情。
*/
class Test{
public static void main(String[] args) {
Vehicle vehicle = new WaterVehicle();
vehicle.run("船");
Vehicle vehicle1 = new LandVehicle();
vehicle1.run("摩托车");
Vehicle vehicle2 = new SkyVehicle();
vehicle2.run("飞机");
}
}
-
-
-
单一职责原则注意事项和细节
-
-
降低类的复杂度,一个类只负责一项职责。
提高类的可读性,可维护性
降低变更引起的风险
通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则
设计模式目的与单一职责原则解析
博客介绍了设计模式的目的,包括让程序具备更好的代码重用性、可读性、可扩展性和可靠性,呈现高内聚低耦合特性。还阐述了设计模式的七大原则,重点讲解了单一职责原则,即一个类应只负责一项职责,以及该原则的注意事项和细节。
394

被折叠的 条评论
为什么被折叠?



