Induction of Design Pattern

这篇具有很好参考价值的文章主要介绍了Induction of Design Pattern。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网上查到的设计模式有23种,通过归纳去认识他们也是一种不错的视角。

我这边不按照主流的观点去划分为创建型、结构型、行为型三大类,我只归纳为创建型(Creational Class)、简单功能场景(Simple Method Class)、复杂功能场景(Complex Method Class)三大类。原因是结构、行为这种词本身就比较泛,而模式本身就是一种比较交叉融合的状态,所以根据我的理解,我主观性的重新划分,当然只是为了让我理解和思考。

其实程序设计模式里,大多数的考虑初衷都是为了面向未来未知情况,在当前就先规划做好扩展方式,方便能让未来使用者使用方便的代码结构。
也有能节省资源的设计模式、方便解耦的设计模式...

设计模式的相似性、复杂性:
不得不承认有几个设计模式其实很相似,但他们之间的差异只是名字上的区别,
设计模式只能是参考,一定不是必须要遵守的教条,这样会很容易让一个事物搞得越来越复杂!

Creational Class

帮助机器(系统)节省资源的创建对象模式:

  • Singleton Pattern
    在程序的整个生命周期里,有且只有一个实体类;
  • Flyweight Pattern
    通过在类里面设置状态,来操作类。 注意:尽管享元模式可以通过内部状态外部状态的设置来控制类的行为,但其核心目的并不是通过状态的设置来控制类,而是通过共享对象和分离状态来提高内存利用和性能。
  • Prototype Pattern(也叫克隆模式)
    对一个类进行大量的克隆,节省资源;

面对未来未知,由外部提供需求来创建对象模式,如下几种应该说在各大框架里能常看到:

  • Simple Factory
  • Factory Methoed Pattern
  • Abstract Factory Pattern
    当抽象工厂模式只生产一个产品时,和工厂方法模式没啥区别。当它生成一组或多个产品时,才有所区别。
  • Buidler Pattern
    建筑工程最能体现这个模式了,首先盖房流程很多,并且不同公司会有不同方案,最终生产时需要一个监理进行宏观管控。

Simple Method Class

Simple Method Class就是非常好理解的设计模式,他们往往都能对应现实生活中某些机构、某种职业的运作模式,所以非常好理解。

  • Facade Pattern(也叫前台接待模式)
    你去一个公司面试,你只能通过前台(调用前台),找面试人、打水、打印简历等操作。好处是,你不需要你自己进办公楼里到处找面试人,自己到处找打印机去打印简历。
  • Template Pattern
    模版模式也是一种应对未来未知情况的解决方案,部分可知,部分不可知;
  • 观察者模式
    一种一对多的关系,当一个类的状态发送改变,就通知所有依赖(有关系)的类;
  • 状态模式/策略模式
    将状态封装成一个类,不同状态的类,会有不同的行为。 状态模式和策略模式是一样的。
  • 中介者模式
    为了解耦各个类,只通过中介者去通信,有点绕。
  • Proxy Pattern
    • 代理对象充当了客户端和目标对象之间的中介,从而可以在访问目标对象时添加额外的逻辑;
    • 代理对象持有一个真实主题的引用,并在需要时创建或获取真实主题对象;
    • 代理对象在调用真实主题之前或之后,执行一些额外的操作,例如权限验证、缓存、日志记录等。
  • 责任链模式
    责任链模式很容易理解(想想在公司请假的流程,员工发起,组长审批——>部门领导审批——>HR审批——>BOSS...)
    它也用到递归,控制不好就容易死循环;

下面这些个模式一般不在程序设计的时候考虑,并且新程序在设计初期就不应该出现如下情况,会把程序搞复杂!反而,它们更适合运用在程序维护阶段,程序已经运行起来,在不大规模的重构之前,也没有好办法的时候才考虑使用。当然还有一种情况,就是你使用别人写好的接口,调用别人的SDK,你是无法修改调用的接口方法的,你能做的就是自己封装多一层中间层,下面是几种不同场景介绍:

  • Adapter Pattern(适配器模式)
    当需要使用一个已存在的类,但其接口与要求的接口不匹配时。
  • Decorator Pattern(装饰者模式)
    • 用于在不修改现有对象结构的前提下,动态地给对象添加额外的功能;
    • Decorator 和 Proxy有相似的地方,就是都是给现有类.方法增加额外功能,不同点在于Decorator是不修改现有对象结构

Complex Method Class

下面这几个模式就有点绕了,只能自己多思考了,无他法。文章来源地址https://www.toymoban.com/news/detail-697943.html

  • Composite Pattern
    需要用到递归,控制不好就容易死循环;
  • Bridge Pattern
  • 迭代器模式
    解耦思想,将行为和对象分离;
  • 备忘录模式
    在不暴露对象内部状态的情况下保存和恢复对象的状态。
    为了完成这个保护和恢复功能涉及的类比较多,就容易复杂。
  • 命令模式
    也是一种解构思想,将行为和数据结构分离;
    命令模式还有一个撤销操作,和备忘录有相似;
  • 访问者模式(主体不变却可以自由加入行为模式)
    在不修改现有对象结构的情况下,定义对对象结构中各元素的新操作
  • 解释器模式
    一个简单版的编译器、解释器

到了这里,关于Induction of Design Pattern的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式--职责链模式(Chain of Responsibility Pattern)

    职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它为请求创建了一个接收者对象的链。 这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在职责链模式中,通常每个接收者都包含对另一个接收者的引用。如果

    2024年02月20日
    浏览(37)
  • 设计模式十四:责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求。 在责任链模式中,多个处理者对象被连接成一个链。当接收到一个请求时,每个处理者会判断自己是否有能力来处理该请求,如果可以

    2024年02月13日
    浏览(36)
  • 设计模式——责任链模式(Chain of Responsibility Pattern)+ Spring相关源码

    类型: 行为型模式 每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 目的: 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所

    2024年02月05日
    浏览(57)
  • Design Pattern——Heuristic Benchmark

    Purpose: Establishes a clear and understandable baseline for model performance. Helps gauge the value and complexity of an ML model against a simpler, more intuitive approach. Facilitates communication and understanding of model performance to stakeholders who may not have deep ML expertise. Key Steps: Define a simple, interpretable heuristic: Choose a rule

    2024年01月16日
    浏览(46)
  • ML Design Pattern——Fairness Lens

    Fairness Lens When discussing machine learning design patterns through a fairness lens, we are essentially examining how to ensure that the algorithms and models we create are fair and unbiased. This involves considering how different groups of people might be affected by the use of these models and taking steps to mitigate any potential biases or unfair out

    2024年01月23日
    浏览(33)
  • ML Design Pattern——Feature Store

    Essentially, a Feature Store is a centralized repository for pre-computed features . Think of it as a supermarket for your models, where they can readily pick and choose the ingredients (features) they need for training and inference. But it\\\'s not just about convenient storage; the Feature Store unlocks a whole buffet of benefits: 1. Reproducibility and Gove

    2024年02月01日
    浏览(40)
  • ML Design Pattern——Model Versioning

    Key Concept: Versioning machine learning models  is a crucial practice that involves systematically tracking and managing different model iterations over time. This ensures reproducibility, enables comparisons, facilitates rollbacks, and supports continuous improvement. Purposes: Reproducibility:  Recreate model behaviors precisely for auditing, debugging,

    2024年01月17日
    浏览(36)
  • ML Design Pattern——Explainable Predictions

    Explainable Predictions Explainable Predictions refer to the practice of designing ML models in a way that enables humans to understand and interpret the rationale behind their predictions. This is particularly important in domains where the decisions made by ML models have real-world consequences, such as loan approvals, medical diagnoses, and autonomous dr

    2024年01月23日
    浏览(52)
  • 【文献翻译】Select-Storage: A New Oracle Design Pattern on Blockchain

    出处:北京邮电大学网络与交换技术国家重点实验室 区块链系统可以以去中心化的方式执行各种交易行为和信息存储,而智能合约需要多个节点在本地沙盒环境下按照预设的设置执行,以保证每个节点的一致性,这使得智能合约无法主动获取外界的数据。去中心化的预言机在

    2024年01月16日
    浏览(34)
  • 设计模式--组合模式(Composite Pattern)

    组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构,并且能像使用独立对象一样使用它们。 组合模式主要包含以下几个角色: Component:这是组合中对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管

    2024年02月22日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包