设计模式
文章平均质量分 51
Decade0712
自律给你自由
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【行为型模式】备忘录模式memento
闲话爷终于把23中设计模式看完啦!!!看的比较浅,欢迎大家多提意见,后面还会持续修改这些博客基本要点1、定义保存一个对象的某个状态,以便在适当的时候恢复对象2、使用场景word文档编辑时,出现断电这种意外情况,当我们再打开时,会发现文档恢复至断电前3、核心保存某个对象内部状态的拷贝,这样就可以将对象恢复至之前某个时间点的状态4、结构源发器类Originator:负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态,可以理解为需要备份的对象备忘录原创 2021-12-02 23:14:53 · 278 阅读 · 0 评论 -
【行为型模式】观察者模式
基本要点1、定义它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新2、使用场景当一个对象与多个对象存在一对多的依赖关系,并且此对象发生变化时,它需要通知到其他对象,这时,我们就要使用观察者模式例如,很多客户订阅了"LOL赛事",当有比赛进行时,我们就会给这些客户推送消息3、角色观察者(Observer):将自己注册到被观察对象中,被观察对象将观察者存放在一个容器里,就如例子中的客户被观察者(Subject):被观察对象发生了某种变化,从容原创 2021-12-02 22:46:36 · 503 阅读 · 0 评论 -
【行为型模式】状态模式
基本要点1、核心用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题,例如酒店管理系统中房间状态、OA公文系统中公文状态以及对应状态需要执行的操作2、结构Context环境类:环境类中维护一个state对象,定义了当前的状态State抽象状态类ConcreteState具体状态类:每一个类封装了一个状态对应的行为代码样例我们举一个酒店房间状态的例子(空闲、预订和入住)首先我们需要创建一个环境类来维护房间的状态/** * 环境类,此处指房间对象 */public class原创 2021-12-01 21:55:48 · 210 阅读 · 0 评论 -
【行为型模式】模板方法模式template method
基本要点1、核心处理步骤父类中定义好,具体步骤延迟到子类中定义2、介绍模板方法定义了一个操作中的算法骨架,将某些步骤延迟到子类中去定义,这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤3、举例我们请客去吃饭,大概流程就是取号-----点菜------买单但是点菜这个环节我们要等拿到菜单才能决定具体要点什么,所以我们先定义一个点菜的操作,等到了饭馆再决定点烧烤还是点火锅4、开发畅常用场景实现一个算法,如果存在整体步骤比较固定,某些部分易变,那我们就可以把易变部分抽象原创 2021-12-01 21:05:29 · 912 阅读 · 0 评论 -
【行为型模式】策略模式strategy
基本要点1、定义:策略模式指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法2、本质:分离算法,选择实现3、举例:我们开了一家手机专卖店,对于不同的客人,我们有不同的报价策略新客人,小批量购机,我们原价新客人,大批量购机,我们打9折老客人,小批量购机,我们打85折老客人,大批量购机,我们打8折虽然我们可以通过if/else语句进行处理,但是后续如果还有其他策略,我们就需要修改原代码,不符合我们的开闭原则,所以我们把报价设计成一个接口,对应的报价策略设计成相应的实现类,这样,即使有新原创 2021-11-30 22:12:26 · 342 阅读 · 0 评论 -
【行为型模式】解释器模式和访问者模式
解释器模式这种设计模式不太常用,用于使用面向对象语言开发的编译器和解释器设计本人暂时还没到这个深度后面接触到了会回来更新此篇博客的哈~访问者模式原创 2021-11-28 20:04:51 · 198 阅读 · 0 评论 -
【行为型模式】命令模式Command
基本要点1、介绍命令模式把一个请求或者操作封装到一个对象中。 命令模式允许系统使用不同的请求把客户端参数化;对请求进行排队处理或者记录请求相关日志,可以提供命令的撤销和恢复功能。也称为动作action模式,事务transaction模式2、结构—Command抽象命令类—ConcreteCommand具体命令类—Receiver接收者接收者执行与请求相关的操作,具体实现对请求的业务处理—Invoker调用者请求的发送者,它通过命令对象来执行请求,一个调用者并不需要在设计时确定其接收者,它只原创 2021-11-28 19:51:26 · 161 阅读 · 0 评论 -
【行为型模式】中介者模式Mediator
基本要点1、核心同事对象:系统中对象关系呈网状结构时,我们把存在多对多关系的对象称为同事对象,例如公司的财务部、开发部和市场部中介者对象:同事对象只需要和中介者对象打交道,例如总经理2、本质解耦多个同事对象之间的交互关系,每个同事对象都持有中介对象的引用,只和中介对象打交道,我们通过中介对象来统一关联交互关系3、使用场景MVC模式中的C(控制器对象),M和V(M指业务模型,V指用户界面)都会和他打交道代码样例我们就拿上面的公司各部门间的交互来举例首先我们需要创建中介者接口和中介者对象/原创 2021-11-28 16:48:01 · 217 阅读 · 0 评论 -
【行为型模式】迭代器模式Iterator
基本要点场景:提供一种可以遍历聚合对象的方式,又称游标模式cursor,例如JDK内部迭代器聚合对象:存储数据迭代器:遍历数据代码样例我们可以自己写一个迭代器首先定义一个迭代器接口/** * 自定义迭代接口 */public interface MyIterator { // 将游标指向第一个元素 void first(); // 将游标指向最后一个元素 void last(); // 判断是否存在下一个元素 boolean hasNex原创 2021-11-28 15:46:43 · 311 阅读 · 0 评论 -
【行为型模式】责任链模式
闲话我今天一定要把设计模式看完!!!欢迎大家一起讨论基本要点1、定义:将能够处理同一请求的对象连成一条链,所提交的请求沿着链传递,链上的对象判断是否有能力处理该请求,如果能处理则处理,否则传给链上的下一个对象例如:公司请假申请,假如小于3天,组长审批,大于等于3天小于10天,经理审批,大于等于10天小于30天,总经理审批,大于等于30天不予审批2、实现方式:链表方式定义职责链:handler一环接一环非链表方式实现职责链:通过集合、数组实现责任链,将handler全都放进容器中,使用@orde原创 2021-11-28 11:42:42 · 352 阅读 · 1 评论 -
【设计模式】设计模式简介
基本概念设计模式(GoF23)的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解意义:1、提高编程、思维和设计能力2、使程序设计更加标准化,缩短开发周期,提高开发效率3、提高代码的可重用性、可读性、可维护性基本要素:模式名称、需要解决的问题、方案、效果OOP七大原则1、开闭原则:对扩展开放,对修改关闭2、里氏替换原则:继承必须确保超类(父类)所拥有的性质在子类中仍然成立3、依赖倒置原则:要针对接口编程,不要针对实现编程,即调用类时,尽量原创 2021-11-28 09:58:57 · 219 阅读 · 0 评论 -
【结构型设计模式】享元模式FlyWeight
闲话今天是周末,本来想偷一下懒,想想还是看一节设计模式吧写的不好,欢迎大家一起讨论~基本要点1、使用场景:内存属于稀缺资源,如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存2、核心–以共享的方式支持大量细粒度对象的重用–享元对象能做到共享的关键是区分了内部状态和外部状态内部状态:可以共享,不会随环境变化而改变外部状态:不可以共享,会随环境变化而改变举例围棋软件来说每个棋子都可以看成一个对象,颜色、形状、大小都能称为内部状态,因为这些是可共享的但是位置每一个棋子都是独一原创 2021-11-27 19:13:42 · 265 阅读 · 0 评论 -
【结构型设计模式】外观模式
基本要点1、迪米特法则(最少知识原则)一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解就像去茶馆喝茶,只需要和茶水服务员打交道即可,不需要和茶具、开水还有茶叶打交道2、核心为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用,例如自己封装的工具类代码样例假设我们现在要去开一家公司,我们需要去银行取钱,还要去工商局进行注册登记如果我们有一个接口封装好这些方法,我们就可以直接调用这一个接口即可// 银行取钱接口public interface Bank {原创 2021-11-25 22:15:02 · 342 阅读 · 0 评论 -
【结构型设计模式】装饰模式decorator
基本要点1、职责1)动态的为一个对象增加新的功能2)装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀2、实现细节抽象构件角色(component):真实对象和装饰对象有相同的接口,这样,客户端就能以与真实对象相同的方式同装饰对象交互例如:IO流中的InputStream、OutputStream、Reader、Writer具体构件角色(真实对象,concreteComponent)例如:IO流中的原创 2021-11-24 21:45:26 · 253 阅读 · 0 评论 -
【结构型设计模式】组合模式Composite
基本要点1、使用场景:把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象2、组合模式核心抽象构件(Component)角色:定义了叶子和容器构件的共同点叶子(Leaf)构件角色:无子节点容器构件(Composite)角色:有容器特征,可以包含子节点public interface Component { void operation();}/** * 叶子组件,无子节点 */interface Leaf extends Componen原创 2021-11-23 23:37:32 · 138 阅读 · 0 评论 -
【结构型模式】桥接模式
1、基本要点1、桥接模式核心要点:处理多层继承结构(违背了单一职责原则),处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立扩展,在抽象层建立关联2、代码样例现在有台式机、笔记本两种种数码产品每种产品都有2个厂家供消费者选择:华为和苹果如下图,假如我们要增加一个厂家或者增加一种数码产品如果产品种类比较多或者厂家比较多时,涉及到的扩展代码就会非常复杂/** * 这是没有使用桥接模式的样例 */public interface ComputerWithoutBridg原创 2021-11-22 23:12:25 · 392 阅读 · 0 评论 -
【结构型设计模式】代理模式
介绍了静态代理模式和动态代理模式原创 2021-11-14 22:03:51 · 416 阅读 · 0 评论 -
【创建型设计模式】工厂模式
主要介绍了简单工厂、工厂方法和抽象工厂模式原创 2021-11-10 22:01:06 · 375 阅读 · 0 评论 -
【创建型设计模式】单例模式
定义单例模式:一个类有且仅有一个实例,并且自行实例化向整个系统提供核心作用:要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。...原创 2021-11-10 21:37:36 · 359 阅读 · 0 评论 -
【结构型设计模式】适配器模式
适配器模式今天进入结构性设计模式,首当其冲的就是适配器模式定义适配器模式(Adapter Pattern,有时候也称包装样式或者包装):是作为两个不兼容的接口之间的桥梁,它将一个类的接口适配成用户所期待的举个例子,我们有一个type-C接口的手机和一个3.5MM的耳机,为了能正常使用这个耳机,我们提供一个转接口,让手机能够兼容这个耳机适配器模式中的角色1、目标接口(Target):客户所期待的接口,目标可以是具体或抽象的类,也可以是接口(可以了解为,我的手机需要一个接口,把3.5MM耳机转换成t原创 2021-11-03 23:00:09 · 252 阅读 · 0 评论 -
【创建型设计模式】原型模式prototype
原型模式看完建造者模式之后,我来到了创建型模式的最后一个部分----原型模式理解定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象使用场景:当我们通过new产生一个对象需要非常繁琐的数据准备或者访问权限,则可以使用原型模式,这样可以提高效率注意:1、区分什么是深复制、什么是浅复制2、原型模式中的原型对象需要实现Cloneable接口3、用序列化和反序列化实现深克隆时,原型对象还需要需要实现Serializable接口代码样例1、浅复制我们创建一个继承Cloneable原创 2021-10-27 23:07:10 · 158 阅读 · 0 评论 -
【创建型设计模式】建造者模式
建造者模式这是本人第一次学习建造者模式,浅谈下自己的理解和展示下demo理解定义:建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示建造者模式实现了组件的构造(Builder)和装配(Director)的分离构造的不同或者装配的不同都可以导致最后得到不同的对象举个例子:我们要组装一个火箭,火箭的结构分为轨道舱、逃逸塔和引擎我们分别让不同的厂家负责这些零件的生产和装配代码样例首先我们定义一个火箭的对象实体类为了贴合实际开发,我们将各个零件都原创 2021-10-23 23:35:04 · 185 阅读 · 0 评论
分享