【软件工程】简单讲讲设计模式七大原则,以及代码简单举例

给自己一个目标,然后坚持一段时间,总会有收获和感悟!
学软件或计算机专业的同学应该都会接触到一门课程《软件工程》,七大设计原则属于软件工程中的重要知识点。

在这里插入图片描述

一、软件工程

软件工程是一门关注构建高质量软件的学科,它涉及了软件开发的全过程,从需求分析、设计、编码、测试到部署和维护。软件工程的目标是通过系统性的方法和工具来开发和维护可靠、高效、可维护和安全的软件。

  • 软件工程的作用包括以下几个方面

1.1、提供指导和规范

软件工程提供了一系列的准则、方法和最佳实践,以指导开发团队如何有效地组织和管理软件项目。它帮助开发者遵循一套规范和标准,以确保软件开发过程的质量和可控性。

1.2、确保软件质量

通过使用软件工程方法和技术,开发团队可以在整个软件开发生命周期中进行严格的质量控制。这包括对需求的准确定义、系统设计的完整性和正确性、代码的可读性和可维护性,以及全面的软件测试和验证。

1.3、提高开发效率和生产力

软件工程通过引入工程化的方法和工具,提供了一系列的自动化和协作机制,可以大大提高开发效率和生产力。例如,使用版本控制系统可以更好地管理代码的变更,使用集成开发环境可以提供更好的编码和调试工具。

1.4、降低软件开发风险

软件工程注重风险管理和控制,帮助开发团队在项目早期识别和处理潜在的问题和风险,从而降低项目失败的风险。通过合理的项目计划、风险评估和迭代开发等方法,可以更好地管理和减少开发过程中的不确定性。

1.5、支持可维护和可扩展性

软件工程关注软件的长期维护和演化,帮助开发团队构建易于维护和灵活扩展的软件系统。通过合理的架构设计、模块化和抽象化,软件工程可以提高软件系统的可维护性和可扩展性。

总之,软件工程在软件开发过程中起到指导、规范、管理和控制的作用,以确保开发高质量的软件系统。
它帮助开发者和团队更好地组织、规划和执行软件项目,从而提高开发效率、减少风险,并满足用户需求。

二、七大原则

在软件设计中,有七个常用的设计原则,也被称为SOLID原则

2.1、单一职责原则

单一职责原则(Single Responsibility Principle,SRP),一个类应该只有一个引起它变化的原因。简单来说,一个类或模块应该只负责一项任务或功能。例如,一个负责处理用户登录的类不应该承担其他与用户无关的功能。

2.2、开放封闭原则

开放封闭原则(Open-Closed Principle,OCP),软件实体(类、模块、函数等)应该是可扩展的,但对修改是封闭的。这意味着我们应该通过扩展现有实体,而不是修改它们来实现新的功能或行为。例如,通过使用抽象类或接口,我们可以定义一个通用的日志记录接口,然后通过实现该接口来添加新的日志记录器。

2.3、里式替换原则

里式替换原则(Liskov Substitution Principle,LSP),子类应该能够替换父类并且不影响程序的逻辑正确性。简单来说,子类应该能够以父类的身份无缝使用,并且不引起错误或异常。例如,如果有一个父类定义了一个返回数字的方法,子类应该能够返回同样类型的数字,而不是返回字符串或其他类型。

2.4、依赖倒转原则

依赖倒转原则(Dependency Inversion Principle,DIP),高层模块不应该依赖于低层模块的具体实现,而是应该依赖于抽象接口或类。简单来说,代码应该依赖于接口或抽象类,而不是具体的实现类。例如,一个控制器类应该依赖于定义好的接口而不是具体的服务类。

2.5、接口隔离原则

接口隔离原则(Interface Segregation Principle,ISP),客户端不应该依赖于它不需要的接口。简单来说,一个类不应该强制依赖于它不使用的接口方法。例如,如果有一个需要进行文件操作的类,不应该强制实现与网络通信相关的方法。

2.6、迪米特法则

迪米特法则(Law of Demeter,LoD,最少知识原则),一个对象应该与其他对象之间保持最少的了解。简单来说,一个类或对象应该尽可能少地知道其他类或对象的细节。例如,如果一个类需要使用另一个类的功能,应该通过接口或抽象的方式进行交互,而不是直接调用该类的方法。

2.7、合成复用原则

合成复用原则(Composition/Aggregation Reuse Principle,CARP),优先使用对象组合和聚合,而不是继承来达到代码复用的目的。简单来说,应该通过组合多个类的方式来实现代码复用,而不是通过继承。例如,使用组合关系将多个小的功能类组合成一个大的功能类,而不是通过继承来扩展功能。

三、代码例子

3.1、单一职责原则例子

// 单一职责原则例子
class UserService {
    public void register(String username, String password) {
        // 用户注册逻辑
    }
}

class EmailService {
    public void sendEmail(String recipient, String content) {
        // 发送邮件逻辑
    }
}

3.2、开放封闭原则例子

// 开放封闭原则例子
interface Logger {
    void log(String message);
}

class ConsoleLogger implements Logger {
    public void log(String message) {
        System.out.println(message);
    }
}

class FileLogger implements Logger {
    public void log(String message) {
        // 将日志写入文件的逻辑
    }
}

3.3、里式替换原则例子

// 里式替换原则例子
class Shape {
    public double getArea() {
        return 0;
    }
}

class Rectangle extends Shape {
    private double width;
    private double height;

    public void setWidth(double width) {
        this.width = width;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getArea() {
        return width * height;
    }
}

过上述例子,可以更好地理解七大设计原则在实际代码中的应用。这些原则有助于提高代码的可维护性、扩展性和重用性。

猜你喜欢

转载自blog.csdn.net/lmy_520/article/details/133909381
今日推荐