设计模式

举报
yd_245546638 发表于 2022/10/26 10:55:37 2022/10/26
【摘要】 创建型模式 (5种)    工厂模式:设置生产产品实例的接口,封装不同的实例初始化过程,交由子类工实现厂进行生产    抽象工厂模式:在工厂模式上添加抽象工厂,通过子类实现抽象工厂来生成不同类型,相同逻辑的工厂,与工厂模式不同在于可以生成不同类型的产品。    单例模式:多次生成?不。常用于需要存储在内存中反复调用的数据,和常调用但不能静态化的一些辅组类等等(Netty的helper),例如...

创建型模式 (5种)
    工厂模式:设置生产产品实例的接口,封装不同的实例初始化过程,交由子类工实现厂进行生产
    抽象工厂模式:在工厂模式上添加抽象工厂,通过子类实现抽象工厂来生成不同类型,相同逻辑的工厂,与工厂模式不同在于可以生成不同类型的产品。
    单例模式:多次生成?不。常用于需要存储在内存中反复调用的数据,和常调用但不能静态化的一些辅组类等等(Netty的helper),例如,某个于属性文件中每个属性一一对应的java类。
    创建者模式:buider.build(),假如生产的实例对象过于复杂,而这种复杂往往会体现在需要初始化多个实例成分组成完整实例的工厂的初始化中时,这种情况提出生产方法,交由builder处理生成工厂。例子:使用SqlSessionFactoryBuilder.build()创建生产sqlsession的工厂
    原型模式:首先设计好模型,在需要时按照模型进行创建(spring的原型模式,实例每次使用时通过bean定义进行创建);或者初次创建后保存,每次调用时copy

结构型模式 (8种)
    适配器模式:同功能不同规范,例如使用B规范的功能,某个时刻必须要使用A规范的工具,就需要通过适配器将A规范的工具转换为B规范再进行使用
    桥接模式:在方法逻辑中使用抽象对象,这样就可以随时替换成抽象下的各种实现。该抽象就成了方法逻辑与抽象下的实现的桥梁
    过滤器模式:很明显了,就是过滤。统一类型可以有N种过滤规则,假如使用桥接模式,就可以通过选择不同的过滤器来轻易切换过滤规则
   组合模式:一般展现出来的是树形结构。例如:部门,层级菜单
   装饰器模式:通过包装给原对象添加新组件(或属性等结构),在对象原方法中添加新的组件的调用来实现功能的扩展。
   外观模式:将系统的各种操作进行逻辑上的组合,然后向使用者。比如:吃饭要打饭、打菜、拿筷子、吃;然后我们就可以将(打饭->打菜->拿筷子->吃)四步封装成(吃饭)逻辑来简化调用逻辑
   享元模式:将会重复调用的对象交给集合保存,来避免重复创建(spring的单例bean,虽然叫单例但实际上更像是享元)。享元模式很大程度上跟单例模式非常类似,当然差别也很明显。
   代理模式:代理模式。代理是为了原逻辑扩展,逻辑上跟装饰器模式的区别是装饰器:装饰器重点在于给对象扩展新方法,代理智扩展被代理对象原方法。实现上代理要么静态代理,要么使用jdk/第三方进行动态代理

行为型模式 (10种)
    责任链模式:将请求的发送者与接收者解耦,请求进入责任链处理,责任链每个责任都逐一进行判断,满足条件进行处理,不满足跳过。处理完的结果再交给接收者(过滤链,拦截链,netty的pipline)
    迭代器模式:另外一种循环方法;按顺序访问集合对象。
    中介者模式:是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。例如请求传入(userid, username)/(userparams) userparams{userid, username}
    备忘录模式:保存对象的状态,在适当时候恢复对象。例如回溯算法
    观察者模式:对象间存在一对多关系时,则使用观察者模式;被观察对象都依赖观察者,出现需要观察的事件通知观察者
    状态模式:在状态模式中,类的行为是基于它的状态改变的。
    空对象模式:包含类型对象该有的方法,但都不包含逻辑。容错用的,不会进行任何操作,不会抛出异常的对象
    策略模式:桥接常用,通过不同策略实现不同逻辑的调用(极端例子,lambda)
    模板模式:抽象工厂属于,一个抽象类定义方法以及方法的调用(常见留下空方法交由子类覆盖扩展),子类允许覆盖部分方法实现不同逻辑
    访问者模式:不同对象进行相同操作,通过同名方法不同参数区别不同处理逻辑。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。