1.六大设计原则
六大设计原则主要是指:
单一职责原则(Single Responsibility Principle);
开闭原则(Open Closed Principle);
里氏替换原则(Liskov Substitution Principle);
迪米特法则(Law of Demeter),又叫“最少知道法则”;
接口隔离原则(Interface Segregation Principle);
依赖倒置原则(Dependence Inversion Principle)。
单一职责原则(SRP) 单一职责原则要求一个类只负责一个职责。如果一个类承担了多个职责,当其中一个职责发生变化时,可能会影响其他职责的功能,导致代码难以维护。例如,将用户登录和注册功能放在同一个类中会违反该原则。通过拆分职责,可以提高代码的稳定性和可维护性。
里氏替换原则(LSP) 里氏替换原则强调子类必须能够替换父类而不影响程序的正确性。子类应继承父类的行为,并在此基础上扩展功能,而不是改变父类的原有行为。例如,动物类的子类如狗和猫都应正确实现父类的“吃”方法,而不破坏程序逻辑。
接口隔离原则(ISP) 接口隔离原则主张接口应尽量小而精简,避免让类实现不需要的方法。例如,一个形状接口包含绘制和调整大小的方法,但圆形只需要绘制功能,而矩形只需要调整大小功能。将接口拆分为更小的部分,可以减少不必要的依赖,提高代码的模块化和灵活性。
依赖倒置原则(DIP) 依赖倒置原则要求高层模块和低层模块都依赖于抽象,而不是具体实现。抽象不应依赖细节,细节应依赖抽象。例如,通知服务不应直接依赖具体的邮件或短信实现,而是依赖一个通用的通知接口。这样可以在不修改高层模块的情况下轻松扩展新的通知方式。
迪米特原则(LoD) 迪米特原则提倡对象之间的耦合应尽量减少,只与直接相关的对象通信。例如,购物车类可以作为中间层,顾客类通过购物车与书籍类交互,而不是直接调用书籍类的方法。这样可以降低类之间的耦合度,提高代码的可维护性。
开闭原则(OCP) 开闭原则要求软件实体对扩展开放,对修改关闭。当需要添加新功能时,应通过扩展现有代码而不是修改已有代码来实现。例如,通过继承或实现接口来扩展功能,而不是直接修改原有类的代码。这样可以减少对现有功能的影响,提高代码的稳定性。
2.考点
软考设计原则主要包括以下几条:
单一职责原则:一个类应该只有一个引起其变化的原因。
开放-封闭原则:软件实体(类、模块、函数)应该对扩展开放,对修改关闭。
里氏替换原则:子类对象应该能够替换父类对象。
依赖倒置原则:要依赖于抽象而不是具体实现,面向接口编程。
接口隔离原则:使用多个专用的接口比使用单一的接口要好。
迪米特法则:一个对象应当对其他对象尽可能少的了解。