📜  设计模式 |第一套(介绍)

📅  最后修改于: 2021-09-10 02:51:17             🧑  作者: Mango

设计模式为软件设计中出现的常见问题提供了通用的可重用解决方案。该模式通常显示类或对象之间的关系和交互。这个想法是通过提供经过良好测试、经过验证的开发/设计范例来加快开发过程。设计模式是用于解决常见问题的独立于编程语言的策略。这意味着设计模式代表一个想法,而不是一个特定的实现。通过使用设计模式,您可以使您的代码更加灵活、可重用和可维护。

在您的项目中始终实施设计模式并不是强制性的。设计模式不适用于项目开发。设计模式旨在解决常见的问题。只要有需要,就必须实现一个合适的模式,以避免将来出现此类问题。要找出要使用的模式,您只需尝试了解设计模式及其目的。只有这样做,您才能选择正确的。

目标:
了解每个设计模式的目的和用法,以便根据需要选择和实施正确的模式。

例子:
在许多实际情况下,我们只想创建一个类的一个实例。例如,在任何给定时间,一个国家只能有一位现任总统。这种模式称为单例模式。其他软件示例可能是由多个对象共享的单个数据库连接,因为为每个对象创建单独的数据库连接成本很高。类似地,应用程序中可以有一个配置管理器或错误管理器来处理所有问题,而不是创建多个管理器。设计模式的类型
设计模式主要分为三种:

  1. 创造型
    这些设计模式都是关于类实例化或对象创建的。这些模式可以进一步分为类创建模式和对象创建模式。类创建模式在实例化过程中有效地使用继承,而对象创建模式有效地使用委托来完成工作。

    创建型设计模式是工厂方法、抽象工厂、构建器、单例、对象池和原型。

    创建性设计模式的用例-
    1)假设一个开发者想创建一个简单的DBConnection类来连接数据库,并且想通过代码访问多个位置的数据库,一般开发者要做的就是创建一个DBConnection类的实例,并在需要的地方使用它来进行数据库操作.这导致从数据库创建多个连接,因为 DBConnection 类的每个实例都将有一个到数据库的单独连接。为了处理它,我们将 DBConnection 类创建为单例类,以便只创建一个 DBConnection 实例并建立单个连接。因为我们可以通过一个实例来管理DB Connection,所以我们可以控制负载均衡、不必要的连接等。

    2)假设你想创建多个相似类型的实例,并且想要实现松耦合,那么你可以使用工厂模式。实现工厂设计模式的类充当多个类之间的桥梁。考虑使用多个数据库服务器(如 SQL Server 和 Oracle)的示例。如果您正在开发使用 SQL Server 数据库作为后端的应用程序,但以后需要将数据库更改为 oracle,则需要修改所有代码,以便工厂设计模式保持松散耦合且易于实现,我们应该选择工厂设计模式以实现松耦合和创建类似的对象。

  2. 结构的
    这些设计模式是关于组织不同的类和对象以形成更大的结构并提供新的功能。

    结构设计模式有Adapter、Bridge、Composite、Decorator、Facade、Flyweight、Private Class Data 和 Proxy。

    结构设计模式的用例-

    1) 当 2 个接口不兼容并希望通过适配器在它们之间建立关系时,称为适配器设计模式。适配器模式将类的接口转换为客户端期望的另一个接口或类,即适配器让由于不兼容而无法协同工作的类一起工作。所以在这些类型的不兼容场景中,我们可以选择适配器模式。

  3. 行为的
    行为模式是关于识别对象之间的常见通信模式并实现这些模式。

    行为模式是责任链、命令、解释器、迭代器、中介器、备忘录、空对象、观察者、状态、策略、模板方法、访问者

    行为设计模式的用例-

    1) 模板模式定义了将某些步骤推迟到子类的操作中的算法框架。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。例如,在您的项目中,您希望模块的行为能够扩展,以便我们可以使模块随着应用程序需求的变化以新的和不同的方式运行,或者满足新应用程序的需求。但是,不允许任何人对其源代码进行更改,即在开发人员可以使用模板设计模式的那些场景中,您可以添加但不能修改结构。

参考:
https://sourcemaking.com/design_patterns
https://sourcemaking.com/design_patterns/singleton