做门户类网站报价,品牌网站建设解决方,微信公众平台怎么做微网站吗,做网站要买多少服务器空间这里文章只做简要描述#xff0c;作为扫盲 在软件开发过程中#xff0c;遵循一定的设计原则可以帮助开发者创建更加灵活、可维护和可扩展的系统。设计模式的六大原则是面向对象设计的核心理念#xff0c;本文将详细介绍这些原则#xff0c;并结合实例说明它们的重要性和应用… 这里文章只做简要描述作为扫盲 在软件开发过程中遵循一定的设计原则可以帮助开发者创建更加灵活、可维护和可扩展的系统。设计模式的六大原则是面向对象设计的核心理念本文将详细介绍这些原则并结合实例说明它们的重要性和应用方法。 文章目录 单一职责原则(SRP, Single Responsibility Principle)⭐️开放封闭原则(OCP, Open/Closed Principle)里氏替换原则LSPLisKov Substitution Principle接口隔离原则(ISP, Interface Segregation Principle)⭐️依赖倒置原则DIPDependency Inversion Principle⭐️合成复用原则CARPComposite/Aggregate Reuse Principle 单一职责原则(SRP, Single Responsibility Principle)
定义一个类应该只有一个引起变化的原因。即一个类只负责一个职责。 意义遵循单一职责原则可以提高代码的可读性和可维护性减少代码的复杂度。
class ReportGenerator {
public:void generateReport() {// 生成报告}
};class ReportPrinter {
public:void printReport() {// 打印报告}
};在这个示例中ReportGenerator 负责生成报告ReportPrinter 负责打印报告遵循了单一职责原则。
⭐️开放封闭原则(OCP, Open/Closed Principle)
定义软件实体应该对外扩展开放对修改封闭。
意义通过扩展而不是修改现有代码来实现新的功能可以提高系统的稳定性和可扩展性。
class Shape {
public:virtual void draw() 0;
};class Circle : public Shape {
public:void draw() override {// 画圆}
};class Rectangle : public Shape {
public:void draw() override {// 画矩形}
};在这个示例中通过继承 Shape 类来扩展新的形状类而不需要修改现有的 Shape 类。
里氏替换原则LSPLisKov Substitution Principle
定义子类应该能够替换其基类并且功能不受影响。
意义确保继承关系中的子类可以替代基类保证系统的正确性。
class Bird {
public:virtual void fly() {// 飞行逻辑}
};class Sparrow : public Bird {
public:void fly() override {// 麻雀飞行逻辑}
};在这个示例中Sparrow 可以替代 Bird且系统功能不受影响。
接口隔离原则(ISP, Interface Segregation Principle)
定义使用多个专门的接口而不是单一的总接口
意义减少类之间的依赖使系统更加灵活和易于维护。
class Printer {
public:virtual void print() 0;
};class Scanner {
public:virtual void scan() 0;
};class AllInOnePrinter : public Printer, public Scanner {
public:void print() override {// 打印逻辑}void scan() override {// 扫描逻辑}
};在这个示例中Printer 和 Scanner 接口分离避免了单一接口的臃肿。
⭐️依赖倒置原则DIPDependency Inversion Principle
定义高层模块不应该依赖低层模块二者都应该依赖抽象抽象不应依赖细节细节应该依赖抽象。
意义通过依赖抽象层来解耦高层和低层模块提高系统的灵活性和可维护性。
class Database {
public:virtual void connect() 0;
};class MySQLDatabase : public Database {
public:void connect() override {// MySQL 连接逻辑}
};class Application {
private:Database db;
public:Application(Database db) : db(db) {}void run() {db.connect();// 业务逻辑}
};在这个示例中Application 依赖于 Database 抽象接口而不是具体实现遵循了依赖倒置原则。
⭐️合成复用原则CARPComposite/Aggregate Reuse Principle
定义优先使用对象组合而不是继承来达到复用的目的。
意义通过组合多个对象来实现新功能而不是通过继承提高系统的灵活性和可复用性。
class Engine {
public:void start() {// 启动引擎}
};class Car {
private:Engine engine;
public:void drive() {engine.start();// 驾驶逻辑}
};在这个示例中Car 通过组合 Engine 对象来实现驱动功能而不是通过继承。