7个最重要的软件设计模式

要全面深入了解软件设计模式的主题,请查看由C.H.创建的软件设计模式:开发人员的最佳实践。 Afzal,资深软件工程师,在Netflix,Microsoft和Oracle拥有多年经验。下面的大部分内容都是从他的价格中总结出来的。

为何设计图案?

最近,设计模式已经成为编程世界中一些争议的对象,很大程度上是由于他们认为“过度使用”导致代码更难以理解和管理。

重要的是要理解设计模式从来就不是一起被黑客攻击的快捷方式,而是以随意的“一刀切”的方式应用于您的代码。在软件工程中最终无法替代真正的解决问题的能力。

然而,事实仍然是,如果在正确的情况下和正确的原因中使用,设计模式可以非常有用。当战略性地使用时,它们可以使程序员显着提高效率,允许他们避免重新发明谚语轮,而是使用其他人已经完善的方法。在与其他人讨论或管理大型团队中的代码时,它们还提供了一种有用的通用语言来概念化重复的问题和解决方案。

话虽如此,一个重要的警告是确保开发人员也能理解每个模式背后的方式和原因。

没有进一步的麻烦(一般的重要性,从大多数到最少):

最重要的设计模式

1)单身人士

单例模式用于将类的创建限制为仅一个对象。当需要一个(且仅一个)对象来协调整个系统的动作时,这是有益的。有几个示例表明只存在一个类的单个实例,包括高速缓存,线程矿池和注册表。

启动类的对象是微不足道的 – 但是我们如何确保只创建一个对象?答案是使构造函数“私有”到我们打算定义为单例的类。这样,只有类的成员才能访问私有构造函数而不能访问其他人。

重要的考虑因素:可以通过使构造函数受保护而不是私有来对单例进行子类化。这在某些情况下可能是合适的。在这些场景中采用的一种方法是创建子类的单例寄存器,并且getInstance方法可以接受参数或使用环境变量来返回所需的单例。然后,注册表维护字符串名称到单个对象的映射,可以根据需要访问它们。

2)工厂方法

一般工厂生产商品;软件工厂生产对象。而且不只是 – 它没有指定要创建的对象的确切类,而是这样做。为此,通过调用工厂方法而不是调用构造函数来创建对象。
alt图像的文本

通常,Java中的对象创建如下:

SomeClass someClassObject = new SomeClass(); 

上述方法的问题在于使用SomeClass对象的代码现在突然变得依赖于SomeClass的具体实现。使用new来创建对象没有任何问题,但是它带来了将我们的代码紧密耦合到具体实现类的包袱,这可能偶尔会出现问题。

3)战略

策略模式允许在抽象下对相关算法进行分组,这允许在不修改客户端的情况下为另一个算法或策略切换出一个算法或策略。代码不是直接实现单个算法,而是接收运行时指令,指定要运行的算法组中的哪一个。

4)观察员

此模式是对象之间的一对多依赖关系,因此当一个对象更改状态时,将通知其所有依赖项。这通常通过调用其中一种方法来完成。

为了简单起见,请考虑在Twitter上关注某人时会发生什么。您实质上是要求Twitter向您(观察员)发送您所关注的人(主题)的推文更新。该模式由两个参与者组成,即对更新感兴趣的观察者和生成更新的主题。

alt图像的文本

一个主题可以有很多观察者,并且是一对多的关系。但是,观察者也可以自由订阅其他主题的更新。您可以从Facebook页面订阅新闻源,这将是主题,每当页面有新帖子时,订阅者都会看到新帖子。

主要考虑因素:如果有许多科目和很少的观察者,如果每个科目分别存储其观察者,则会增加存储成本,因为一些科目将多次存储同一个观察者。

5)生成器

顾名思义,构建器模式用于构建对象。有时,我们创建的对象可能很复杂,由多个子对象组成,或者需要精心构建的构建过程。通过使用构建器模式可以简化创建复杂类型的练习。Compound体或聚合对象是构建器通常构建的对象。

主要考虑因素:构建器模式可能看起来类似于“抽象工厂”模式,但一个区别是构建器模式逐步创建对象,而抽象工厂模式一次性返回对象。

6)适配器

这允许通过将一个类的接口转换为另一个类来使不兼容的类一起工作。可以把它想象成一种翻译:当两个不会说共同语言的国家元首相遇时,通常会在两者之间设置翻译并翻译对话,从而实现交易所。

alt图像的文本

如果你有两个应用程序,一个吐出输出为XML而另一个需要JSON输入,那么你需要两者之间的适配器才能使它们无缝地工作。

7)国家

状态模式封装了机器可以处于的各种状态,并允许对象在其内部状态发生变化时改变其行为。机器或上下文,如在模式说话中所称,可以对其采取行动,将其推进到不同的状态。在不使用模式的情况下,代码变得不灵活,并且使用if-else条件。

想继续学习?

借助软件设计模式:开发人员的最佳实践,您将有机会做更多的事情,而不仅仅是阅读理论。您将能够深入了解实际问题,并通过实际代码示例了解实际解决方案。

该价格基于Gang of Four的畅销书,但以交互式,易于理解的格式呈现。您将以交互方式掌握本书中的23种著名设计模式,学习3种关键设计模式类型(创建,结构和行为)的正确应用,并学习将这些设计模式融入您自己的项目中。

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/fahimulhaq/the-7-most-important-software-design-patterns-2fea ,版权归作者所有,未经许可,不得转载
你可能还喜欢