设计模式
设计模式知识持续更新,以易全面、易懂的原则分析设计模式的概念、使用场景、优缺点、源码应用等知识!喜欢请关注😍,让我们一起啃下设计模式这块硬骨头!
Leo187
行者常至,为者常成
展开
-
设计模式 | 命令模式讲解、使用案例
概述定义:将请求封装成对象,以便使用不同的请求;命令模式解决了应用程序中对象的职责以及它们之间的通讯方式使用场景:请求的调用者和请求的接收者之间需要解耦,使得调用者和接收者不直接交互;需要抽象出等待执行的行为优点:降低耦合;容易扩展新命令或者一组命令缺点:命令的扩展或增加很多类,提高系统的复杂度命令链模式实例...原创 2020-09-01 20:23:15 · 324 阅读 · 0 评论 -
设计模式 | 责任链模式介绍、使用案例、源码应用
迭代器模式介绍定义:提供一种方法,顺序访问一个集合对象中的各个对象,而又不暴露该对象的内部表示使用场景:访问一个集合对象的内容,而又无需暴露它的内部表示;为遍历不同的集合接口提供一个统一的接口优点:分离了集合对象的遍历行为缺点:类的个数成对增加迭代器模式实例...原创 2020-08-02 13:07:37 · 228 阅读 · 0 评论 -
设计模式 | 观察者模式介绍、使用案例
目录观察者模式定义观察者模式使用案例观察者模式定义观察者模式定义:定义了对象之间一对多的依赖,让多个观察者对象同时监听一个主题对象,当主题对象发生变化时,它的所有依赖者都会收到通知并更新适用场景:关联行为场景,建立一套触发的机制优点:观察者和被观察者之间建立了一套抽象的耦合,支持广播通信缺点:观察者之间有过多的细节依赖,提高了时间的消耗和程序的复杂度;使用时应该梳理清楚调用关系,避免重复调用观察者模式使用案例观察者模式在工作种使用较多,sring框架提供了spring .原创 2020-07-05 21:57:36 · 241 阅读 · 0 评论 -
设计模式 | 模版方法设计模式介绍、模版方法使用案例
学好模版方法,提升代码质量原创 2020-06-26 23:23:15 · 165 阅读 · 0 评论 -
设计模式 | 策略模式介绍、使用案例、开源框架应用
目录策略模式概念策略模式使用案例策略模式在开源框架中的应用策略模式概念定义:定义了算法家族,分别封装起来,让他们之间可以相互调用,此模式让算法的变化不会影响到使用算法的用户。可以消除大量的if-else代码 适用场景:系统有很多类,而它们的区别仅仅在于他们的行为不同;一个系统需要动态的在几种算法中选择一种。 优点:符合开闭原则;避免了使用多重条件转移语句;确保算法的保密性和安全性; 缺点:客户端必须知道所有的策略类,并且自行决定使用哪一个策略类;新增很多类;策略模式使用案例以原创 2020-06-07 16:14:21 · 524 阅读 · 0 评论 -
设计模式 | 组合模式、组合模式使用
组合模式概括定义:将对象组合成树形结构以表示“部分-整体”的层次结构作用:使客户端对单个对象和组合对象保持一致的处理方式使用场景:1.希望客户端可以忽略组合对象与单个对象的差异时 2.处理一个树形结构时优点:清楚的定义分层次的复杂对象,表示对象的全部或部分层次;让客户端忽略层次的差异,方便对整个层次结构进行控制;简化客户端代码; 符合开闭原则;缺点:限制类型时较为复杂; 使设...原创 2020-05-13 23:12:45 · 292 阅读 · 0 评论 -
设计模式|代理模式、以《安家》为模型轻松理解静态代理和动态代理
代理模式概念代理模式是设计模式中运用较广泛且容易理解的一个。代理模式的概念是为其他对象提供一个代理,以控制这个对象的访问,代理对象在客户端和目标对象之间起到中介的作用。代理模式的优点是隔离被代理对象和调用者、一定程度降低耦合度,扩展性好、保护目标对象、增强目标对象。缺点是增加系统复杂性、降低被调用对象的响应速度。代理模式在实际运用中分为静态代理和动态代理两种,静态代理是指在编译期间就知道被...原创 2020-03-29 20:26:39 · 309 阅读 · 0 评论 -
设计模式|装饰者模式使用案例
装饰者模式概括装饰者模式的特点是在不改变原有对象的基础上,将功能附加到对象上;提供了比继承更有弹性的替代方案(扩展原有对象)适用场景:扩展一个类的功能或给一个类加附加职责;动态的给一个对象添加功能,这些功能可以再动态的撤销。 优点:继承的有力补充,比继承更灵活,不改变原有对象的情况下给一个对象扩展功能;通过使用不同的装饰类以及这些装饰类排列组合,可以实现不同的效果;符合开闭原则; 缺点...原创 2020-03-14 17:18:25 · 732 阅读 · 0 评论 -
设计模式|外观模式在源码中的应用
外观模式介绍外观模式又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口适用场景:子系统越来越复杂,增加外观模式提供简单调用接口;构建多层系统结构,利用外观对象作为每层入口,简化层间调用。 优点:简化了调用过程,无需深入了解子系统,防止带来风险;减少系统依赖,松散耦合;更好的划分层次;符合迪米特法制,即最少知道原则。 缺点:增加子系统、扩展子系统容易引入风险;不符合开闭原则(...原创 2020-03-07 17:39:20 · 576 阅读 · 0 评论 -
设计模式|结构型模式
结构型模式共七种:适配器模式、装饰者模式、代理模式、门面模式(外观模式)、桥梁模式、组合模式、享元模式。结构型模式原则结构型模式分析1.适配器模式说明:将一个类的接口转换为客户期望的另一个接口。适配器模式不是软件设计阶段考虑的模式,而是软件维护时要用到的模式 适用场景:新增业务对原有业务的改造。例如家用插座提高220V的电流,用作给电视冰箱、电视供电。新买的手机只能冲5V的电流,...原创 2020-03-07 16:14:40 · 287 阅读 · 0 评论 -
设计模式|单例模式、单例模式的懒汉式为什么是线程不安全的、懒汉式如何实现线程安全
单例模式、单例模式的懒汉式为什么是线程不安全的、懒汉式如何实现线程安全原创 2020-02-11 12:39:07 · 6042 阅读 · 0 评论 -
设计模式|序列化、反序列化对单例的破坏、原因分析、解决方案及解析
序列化、反序列化对单例的破坏单例模式是工作中高频使用的设计模式之一。单例模式可以确保内存中单例类只有一个实例,有效的减少了内存的开销,避免了类的重复创建和销毁。序列化意义是将实现序列化的Java对象转换成字节序列 ,这些字节序列可以被保存在磁盘上,或者通过网络传输。以备以后重新恢复成原来的对象。对于单例类使用序列化、反序列化操作时,会破坏单例(序列化前的对象和反序列化后得到的对象...原创 2020-02-15 19:27:28 · 1382 阅读 · 1 评论 -
设计模式|原型模式的使用案例、克隆复合对象出现的问题及解决方案、深克隆和浅克隆的区别
目录原型模式的使用案例操作复合对象出现的问题及解决方案深克隆和浅克隆的区别原型模式的使用案例原型模式是创建型模式之一,使用原型模式创建对象比直接new对象的性能高、简化创建过程。原型模式的使用较为简单,具体实现如下public class Group implements Cloneable{ private String groupName; publ...原创 2020-02-29 14:29:09 · 376 阅读 · 0 评论 -
设计模式|适配器模式使用案例、适配器模式在源码中的应用
适配器模式使用案例将一个类的接口转换为客户期望的另一个接口。适配器模式不是软件设计阶段考虑的模式,而是软件维护时要用到的模式。适配器优点:1.能提高类的透明性和复用性,现有类的复用但不需要改变;2.目标类和适配器类解耦合,提高程序扩展性;3.符合开闭原则。适配器缺点:适配器模式编写过程中需要全面的考虑,可能会增加系统的复杂性,代码更难读懂。适配器模式的适用场景:新增业务对原有业务的改...原创 2020-03-01 19:16:15 · 773 阅读 · 1 评论 -
设计模式|创建型模式
目录前言读懂UML图设计模式六大原则创建型模式原则创建型模式 分析1.简单工厂模式2.工厂方法模式3.抽象工厂方法模式4.建造者模式5.单例模式创建型模式 总结前言设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,设计模式不是具体的代码,而是一种合理、易拓展、易维护的代码架构思想。设计模式被运用在各种优秀的框架中。掌握设...原创 2020-01-05 17:11:42 · 2072 阅读 · 0 评论