随笔分类 -  23种设计模式

摘要:25-设计模式总结 分类 设计模式可以分为3类: 创建型模式 结构型模式 行为型模式 创建型模式 抽象工厂模式 提供一个创建一系列或相关依赖对象的接口,而无需指定他们具体的类 创建型模式隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象列所定义的接口。这样,创建性模式在创 阅读全文
posted @ 2023-03-16 12:39 Oh,mydream! 阅读(32) 评论(0) 推荐(0)
摘要:24-访问者模式 概念 访问者模式(visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的前提下定义作用于这些元素的新操作 访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用域结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化 访问者模式的目的是要把 阅读全文
posted @ 2023-03-11 15:15 Oh,mydream! 阅读(27) 评论(0) 推荐(0)
摘要:23-解释器模式 概念 解释器模式(interpreter), 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 如果一种特定类型的问题发生的频率足够高,name可能就指的将该问题的各个势力标书为一个简单语言中的句子。这样就可以构建一个解释器,该解释器 阅读全文
posted @ 2023-03-09 10:10 Oh,mydream! 阅读(28) 评论(0) 推荐(0)
摘要:22-享元模式 概念 享元模式(flyweight),运用共享技术有效地支撑大量细粒度的对象 享元模式可以避免大量非常相似的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够受大幅度地减少需要实例化的类的数量。如果能把那些参数移 阅读全文
posted @ 2023-03-03 10:33 Oh,mydream! 阅读(30) 评论(0) 推荐(0)
摘要:21-中介者模式 概念 中介者模式,又叫调停者模式(mediator),用一个中介对象来封装一系列的对象交互。中介者使个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互 优缺点: 中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现了"多对多"交互复杂度的对象群 阅读全文
posted @ 2023-03-02 14:24 Oh,mydream! 阅读(42) 评论(0) 推荐(0)
摘要:20-责任链模式 概念 责任链模式(Chain of Responsibility): 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 责任链的好处: 当客户提交一个请求时,请求是沿链传递直至有一个Co 阅读全文
posted @ 2023-03-01 10:16 Oh,mydream! 阅读(31) 评论(0) 推荐(0)
摘要:19-命令模式 概念 命令模式(Command),将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作 命令模式作用 第一:能比较容易地设计一个命令队列 第二:在需要的情况下,可以较容易地将命令记入日志 第三:允许接收请求的一方决定是否要否 阅读全文
posted @ 2023-02-28 15:29 Oh,mydream! 阅读(20) 评论(0) 推荐(0)
摘要:18-桥接器模式 概念 桥接模式(Bridge), 将抽象部分与它的实现部分分离,使它们都可以独立的变化,实现指的是抽象类和它的派生类用来实现自己的对象。 实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减少它们之间的耦合。 实现 package com. 阅读全文
posted @ 2023-02-25 10:44 Oh,mydream! 阅读(28) 评论(0) 推荐(0)
摘要:15-组合模式 概念 组合模式(Composite), 将对象组合成属性结构以表示"部分-整体"的层次结构,组合模式将使得用户对单个对象和组合对象的使用具有一致性 透明方式与安全方式 透明方式:在Component中声明所有用来管理子对象的方法,其中包括add,remove等,这样实现Compone 阅读全文
posted @ 2023-02-16 09:47 Oh,mydream! 阅读(25) 评论(0) 推荐(0)
摘要:14-备忘录模式 概念 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态,这样以后就可将改对象回复到原先保存的状态 适用情况 Memento模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一肖部分时 阅读全文
posted @ 2023-02-03 09:40 Oh,mydream! 阅读(27) 评论(0) 推荐(0)
摘要:13-适配器模式 适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 什么时候使用 系统的数据和行为都正确,但是接口不符,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器 阅读全文
posted @ 2023-02-02 10:19 Oh,mydream! 阅读(26) 评论(0) 推荐(0)
摘要:12-状态模式 概念 状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的逻辑简化。当然,如果这个状态判断很简单,就没必 阅读全文
posted @ 2023-02-01 10:36 Oh,mydream! 阅读(26) 评论(0) 推荐(0)
摘要:10-观察者模式(发布-订阅模式) 概念 观察者模式又叫做(发布-订阅模式) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,这个主体对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己 实践 用秘书通知员工老板回来,避免摸鱼被老板发现的例子来实践 pac 阅读全文
posted @ 2023-01-31 10:50 Oh,mydream! 阅读(51) 评论(0) 推荐(0)
摘要:09-建造者模式 概念 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 建造者模式主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化 建造者模式的好处就是是的建造代码与表示代码分离,由于 阅读全文
posted @ 2023-01-29 20:54 Oh,mydream! 阅读(31) 评论(0) 推荐(0)
摘要:11-抽象工厂模式 概念 抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 举例 项目中需要将数据库从SqlServer换成Access,User表和Department表的插入和获取都需要重写 package com.niao.abstractFactory; pu 阅读全文
posted @ 2023-01-28 23:19 Oh,mydream! 阅读(33) 评论(0) 推荐(0)
摘要:00-六个原则 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因 开放-封闭原则 软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改(对扩展开放,对修改封闭;在生活中希望自己能够对快乐开放,) 开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所生成的巨大好处, 阅读全文
posted @ 2023-01-28 09:42 Oh,mydream! 阅读(14) 评论(0) 推荐(0)
摘要:08-外观模式 概念 外观模式(facade)为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 什么时候使用外观模式 三个阶段: 首先,在设计初期,应该有意识的将不同的两个层分离,在层与层之间简历外观Facade, 例如典型的三层架构,这样可以为 阅读全文
posted @ 2023-01-27 20:23 Oh,mydream! 阅读(29) 评论(0) 推荐(0)
摘要:07-模板模式 概念 模板模式是一种常见的设计模式,在实现中经常可以看到,具体的使用场景为:整体流程大致相同,其中有部分方法实现不同。 例子 本文给出《大话设计模式》书中的例子,所有的试卷,除了答案不一样,其他的东西都一样 package com.gof.template; /** * 功能描述 * 阅读全文
posted @ 2023-01-20 09:57 Oh,mydream! 阅读(61) 评论(0) 推荐(0)
摘要:06-原型模式 概念 原型模式,不知道为啥叫这个名字,直接叫克隆模式不比原型模式顾名思义的多? 主要涉及的知识就是深拷贝和浅拷贝 浅拷贝是值直接复制拷贝。对象的话是拷贝了一份地址的值,指向的还是同一个对象 实现 package com.gof.proto; import lombok.Data; / 阅读全文
posted @ 2023-01-19 09:38 Oh,mydream! 阅读(18) 评论(0) 推荐(0)
摘要:05-工厂模式与简单工厂模式 简单工厂模式 计算器实现 package com.gof.simpleFactory; /** * 功能描述 * * @since 2023-01-18 */ public abstract class Operation { private double num1; 阅读全文
posted @ 2023-01-18 10:13 Oh,mydream! 阅读(19) 评论(0) 推荐(0)