设计模式
文章平均质量分 76
怒放de生命2010
态度很重要,方向很重要,方法很重要。
展开
-
深入理解:设计模式中的七大设计原则
文章目录深入理解:设计模式中的七大原则一、单一原则二、开闭原则(目标)三、里氏代换原则(基础)四、依赖倒转原则(手段)五、接口隔离原则六、合成复用原则七、迪米特法则深入理解:设计模式中的七大原则一、单一原则概念理解: 1个类只负责一个功能领域中的相应职责。二、开闭原则(目标)概念理解: 抽象是开闭原则的关键。怎么做: 面向接口、抽象类机制编程三、里氏代换原则(基础)概念理解: 开闭原则的最重要实现方式之一;所有引用基类的地方必须能透明的使用其子类的对象).怎么做:1.设计时: 将父原创 2020-06-07 19:33:11 · 365 阅读 · 0 评论 -
设计模式---类之间的关系知多少
文章目录设计模式中的关系总结一、关联关系1.双向关联2.单向关联3.自关联4.多重性关联5.聚合关系6.组合关系二、依赖关系三、泛化关系四、实现关系(Realization)设计模式中的关系总结在软件系统中,类并不是独立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式。现在来总结梳理下:一、关联关系类与类之间最常用的一种关系,是一种结构化的关系,用实线连接有关联关系的对象所对应的类。java中,常将一个类的对象作为另一个类的成员变量。1.双向关联2.单向关联3原创 2020-06-07 18:58:35 · 481 阅读 · 0 评论 -
高手眼中的观察者模式和新手有什么不一样
文章目录基础部分观察者模式的基本经典结构入门小demo经典小demo1:大话设计模式中看门放哨小案例经典观察者模式的两种使用方式: 推和拉高级部分(应用场景)如何让观察者区别对待观察者模式,是使用很多的一种模式,初次了解,只是根据入门demo写个例子,但是不知道用在哪,怎么用,很教科书。个人很喜欢比较实战的的博客或者资料。最近又饿补了一把,感觉有点小收获,记录下。本人主要介绍下观察者模式的基本经典结构;入门小demo;使用的2种方式;观察者模式变形写法;java中封装好的观察者模式使用方式;不原创 2020-06-05 23:31:03 · 452 阅读 · 2 评论 -
深入理解装饰者模式
文章目录装饰者模式的类图装饰者模式的简单入门案例高级部分装饰者模式的本质类的层面考虑:横向扩展(动态扩展)---类比继承对象的层面考虑:为装饰者透明的增加功能,控制功能访问--- 类比AOP装饰者模式的类图装饰者模式的简单入门案例高级部分装饰者模式的本质怎么理解本质:2方面类的层面考虑:横向扩展(动态扩展)—类比继承对象的层面考虑:为装饰者透明的增加功能,控制功能访问— 类比AOP......原创 2020-06-02 23:23:40 · 830 阅读 · 0 评论 -
适配器模式实战场景和本质
文章目录类图适配器模式入门小demo重构第三登录自由适配的业务场景简单的写法:优雅的写法适配器的3种方式适配器模式的本质什么时候使用适配器模式相关模式类图适配器模式的应用场景:适配器模式(Adapter Pattern)是指将一个类的接口转换成客户期望的另一个接口,使原本的接口不兼容的类可以一起工作,属于结构型设计模式。适配器适用于以下几种业务场景:1、已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、原创 2020-05-23 14:59:10 · 4135 阅读 · 0 评论 -
模板方法模式实现封装jdbc
文章目录模板方法模式类图实践1:各个课程流程 求同存异 写法实践2:使用模板方法模式封装jdbc好莱坞法则模板方法模式的本质什么时候用到模板方法模式相关模式对比说明模板方法模式类图实践1:各个课程流程 求同存异 写法/** * 模板会有一个或者多个未现实方法, * 而且这几个未实现方法有固定的执行顺序 */public abstract class NetWorkCourse { protected final void createCourse() { //原创 2020-05-23 14:00:43 · 410 阅读 · 0 评论 -
Delegate 委派模式和代理模式strategy的区别?策略模式如何实现消除多层if else?
文章目录委派模式和代理模式的区别案例应用场景策略模式介绍案例1。案例2:委派模式委派模式,可以精简程序逻辑,提升代码的可读性。委派模式(Delegate Pattern)的基本作用就是负责任务的调用和分配任务。例如:老板(Boss)给项目经理(Leader)下达任务,项目经理会根据实际情况给每个员工派发工作任务,待员工把工作任务完成之后,再由项目经理汇报工作进度和结果给老板。和代理模式的区别跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。委原创 2020-05-19 21:06:12 · 677 阅读 · 0 评论 -
jdk动态代理和cglib动态代理的原理分析
文章目录一、基本代理知识了解①静态代理②jdk动态代理③cglib动态代理二.jdk动态代理和cglib动态代理的共同点?三.jdk动态代理是怎么生成代理对象的?本文解决一下几个问题:1.jdk动态代理和cglib动态代理的共同点?2.jdk动态代理是怎么生成代理对象的?3.cglib是怎么生成代理对象的?4.jdk和cglib各自怎么调用被代理对象的方法?5.cglib动态生成的代理对象的时候为什么是3个class?一、基本代理知识了解①静态代理静态代理是设计模式中规范的模式。来个原创 2020-05-17 14:26:39 · 1401 阅读 · 0 评论 -
原型模式必知必会
文章目录类图实例深克隆个人理解原型克隆和new的区别原型模式和抽象工厂模式的区别本质代码地址:类图实例public interface Prototype{ Prototype clone();}public class ConcretePrototypeA implements Prototype { private int age; private String name; private List hobbies; public int ge原创 2020-05-12 22:16:18 · 154 阅读 · 0 评论 -
单例模式多种玩法
文章目录饿汉单例模式简单饿汉单例模式静态代码块实现饿汉模式懒汉单例模式简单懒汉单例模式(线程不安全)双重检查实现单例模式(线程安全)内部类实现单例模式(线程安全)暴力破解单例反射暴力破解解决方式:序列化和反序列化暴力破解解决方式resolve方法注册类单例枚举实现单例(推荐)使用jad工具查看枚举类的反编译代码容器实现单例线程间实现单例ThreadLocal笔记和代码地址饿汉单例模式简单饿汉单例模式public class HungrySingleton { private static fi原创 2020-05-12 06:19:06 · 313 阅读 · 0 评论 -
工厂模式类图梳理笔记
文章目录简单工厂模式工厂方法模式和变体抽象工厂模式简单工厂模式工厂方法模式和变体标准类图变体抽取公共方法的版本抽象工厂模式需要理解产品族和产品等级概念类图:代码地址:https://github.com/hufanglei/pattern-learn/tree/master/src/main/java/com/example...原创 2020-05-10 06:13:01 · 1041 阅读 · 0 评论 -
Markdown 之 UML图的实用画法
文章目录序列图和流程图画法序列图和流程图画法https://blog.csdn.net/sun8112133/article/details/79891479?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task...转载 2020-04-02 09:41:09 · 221 阅读 · 0 评论 -
进阶设计模式(6) -- 抽象工厂模式
文章目录抽象工厂模式一、初识抽象工厂模式二、体会抽象工厂三、理解抽象工厂模式四、定义可扩展的工厂五、理解抽象工厂六、思考抽象工厂模式抽象工厂模式一、初识抽象工厂模式代码:https://github.com/hufanglei/daily-code/tree/abstract-factory-example1二、体会抽象工厂[外链图片转存失败,源站可能有防盗链机制,建议将图片保...原创 2020-01-18 22:08:58 · 186 阅读 · 0 评论 -
进阶设计模式(5) -- 工厂方法模式
文章目录工厂方法模式一、初识工厂方法模式二、体会工厂方法模式三、理解工厂方法模式工厂方法功能实现和参数化工厂模式与IOC、DI平行类的结构工厂方法模式的优缺点四、思考工厂方法模式的本质与简单工厂的关系何时使用工厂方法模式工厂方法模式一、初识工厂方法模式二、体会工厂方法模式三、理解工厂方法模式工厂方法功能实现和参数化工厂模式与IOC、DI平行类的结构工厂方法...原创 2020-01-13 21:25:25 · 418 阅读 · 0 评论 -
进阶设计模式(4) -- 单例模式
1.初始单例模式2.体会单例模式## 3.理解单例模式4.思考单例模式以上内容都摘自《研磨设计模式》,代码可以翻阅这本书。完原创 2020-01-06 22:40:35 · 185 阅读 · 0 评论 -
进阶设计模式(3) -- 适配器模式
文章目录适配器模式1.初识适配器模式2.体会适配器模式3.理解适配器模式4.思考适配器模式适配器模式1.初识适配器模式2.体会适配器模式3.理解适配器模式4.思考适配器模式参考《研磨设计模式》完...原创 2020-01-01 21:32:42 · 284 阅读 · 0 评论 -
进阶设计模式(2) -- 外观模式
文章目录1.初识外观模式2.体会外观模式3.理解外观模式4.思考外观模式1.初识外观模式2.体会外观模式3.理解外观模式4.思考外观模式完原创 2019-12-30 23:15:12 · 228 阅读 · 0 评论 -
进阶设计模式(1) -- 简单工厂模式转载好文章
转载: https://www.cnblogs.com/kubixuesheng/p/10344427.html转载 2019-12-30 08:51:18 · 140 阅读 · 0 评论 -
设计模式(30) -- 责任链模式
文章目录需求传统方式解决方案职责链模式基本案例类图职责链模式解决OA系统采购审批类图代码职责链模式在 SpringMVC 框架应用![在这里插入图片描述](https://img-blog.csdnimg.cn/20191221205503143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH...原创 2019-12-21 20:58:19 · 192 阅读 · 0 评论 -
设计模式(29) -- 策略模式
文章目录需求传统方案策略模式基本介绍类图策略模式解决鸭子问题策略模式使用案例1.JDK Arrays应用的源码分析2.商城打折促销等不同优惠活动中常用策略模式的注意事项和细节需求传统方案策略模式是一种行为型模式。基本介绍类图策略模式解决鸭子问题DuckFlyBehaviorGoodFlyBehaviorNoFlyBehaviorBadFlyBehavi...原创 2019-12-20 09:27:12 · 129 阅读 · 0 评论 -
设计模式(28) -- 状态模式
文章目录使用场景需求不好的实现问题状态模式介绍类图状态转换的2种方式好的实现总结自己写了个实现方法状态模式好绕,想着十来分钟搞定,没想到看着入迷了(一直没看懂),搞了2个多小时,才算是清楚点,参考了 《设计模式的艺术》,《大话设计模式》,韩顺平《JAVA 设计模式》,《javaweb设计模式之道》。其中,感觉写的最好的是 《设计模式的艺术》,看的最明白。《head first 设计模式》都说好...原创 2019-12-19 11:23:04 · 193 阅读 · 0 评论 -
设计模式(27) -- 解释器模式
文章目录需求分析解释器模式基本介绍原理图解释器模式实现四则运算spring源码使用解释器实例分析解释器模式的注意事项和细节解释器模式的应用解释器模式使用的场景需求分析解释器模式基本介绍原理图解释器模式实现四则运算ExpressionSymbolExpressionSubExpressionAddExpressionVarExpressionCalcul...原创 2019-12-18 10:03:50 · 172 阅读 · 0 评论 -
设计模式(26) -- 备忘录模式
文章目录需求传统解决方式传统的方式的问题分析备忘录模式基本介绍备忘录模式原理类图备忘录代码游戏角色恢复状态实例备忘录模式的注意事项和细节参考韩顺平《java设计模式》,《大话设计模式》,《设计模式的艺术》,菜鸟教程,感觉说的都差不读,记录下。需求传统解决方式传统的方式的问题分析备忘录模式基本介绍备忘录模式原理类图备忘录代码OriginatorMementoCa...原创 2019-12-17 10:03:39 · 130 阅读 · 0 评论 -
设计模式(25) -- 中介者模式
文章目录需求传统设计方案:传统设计模式的缺点中介者模式基本介绍中介者模式类图中介者模式解决智能家电项目中介者模式的注意事项和细节中介者模式常用场景为了解中介者模式,参考了 菜鸟教程,<<设计模式的艺术>>,<<大话设计模式>>,韩顺平《java设计模式》。需求传统设计方案:传统设计模式的缺点中介者模式基本介绍中介者模式类图对...原创 2019-12-16 09:03:08 · 203 阅读 · 0 评论 -
设计模式(24) -- 观察者模式
文章目录需求传统方式实现缺点观察者模式观察者模式解决天气预报需求观察者模式的好处观察者模式在 Jdk 应用的源码分析推荐观察者模式好文章之前也写过观察者模式的文章,链接地址https://blog.csdn.net/baidu_21349635/article/details/90602485[观察者模式和 事件委托]现在重新加深下观察者模式的理解。需求传统方式实现Curre...原创 2019-12-15 15:40:42 · 204 阅读 · 0 评论 -
设计模式(23) -- 迭代器模式
文章目录需求传统模式迭代器基本介绍类图迭代器模式应用实例类图代码:迭代器模式在 JDK ArrayList 集合应用的源码分析迭代器模式的注意事项和细节需求传统模式迭代器基本介绍类图对原理类 图的说明 即 迭代器模 式的角色及职 责1)Iterator 迭代器接口,是系统提供,含义 hasNext, next, remove2)ConcreteIterator : 具体...原创 2019-12-14 15:32:52 · 133 阅读 · 0 评论 -
设计者模式(22) -- 访问者模式
文章目录需求传统方式的问题分析访问者模式基本介绍访问者模式的原理类图使用访问者模式实现歌手测评需求类图:代码:总结访问者模式的注意事项和细节需求传统方式的问题分析访问者模式基本介绍访问者模式的原理类图使用访问者模式实现歌手测评需求类图:代码:Personpublic abstract class Person { //提供一个方法,让访问者可以访问 publ...原创 2019-12-12 09:03:19 · 193 阅读 · 0 评论 -
设计模式(21)-- 命令模式
文章目录命令模式基本介绍命令模式的原理类图命令模式解决智能生活项目命令模式在Spring框架JdbcTemplate应用的源码分析命令模式的注意事项和细节命令模式基本介绍命令模式的原理类图命令模式解决智能生活项目LightReceiverCommandNoCommandLightOnCommandLightOffCommandTVReceiverpub...原创 2019-12-11 09:29:53 · 216 阅读 · 0 评论 -
设计模式(20) -- 模板方法模式
文章目录需求模板方法模式基本介绍模板方法模式解决豆浆制作问题扩展:模板方法模式的钩子方法代码模板方法模式在 Spring 框架应用的源码分析模板方法模式的注意事项和细节这个模式,其实我们经常用到,只是没有提升到设计模式的角度来看。总结一句话,就是抽取公共部分,子类实现变化部分。需求模板方法模式基本介绍类图:模板方法模式解决豆浆制作问题SoyaMilkPeanutSoya...原创 2019-12-09 13:47:18 · 194 阅读 · 0 评论 -
设计模式(19) -- 代理模式
文章目录什么是代理模式静态代理示例jdk代理cglib代理代理模式的变体什么是代理模式静态代理示例jdk代理cglib代理代理模式的变体原创 2019-12-07 19:32:27 · 129 阅读 · 0 评论 -
设计模式(18) -- 享元模式
文章目录需求传统解决方式弊端享元模式介绍类图享元模式解决网站外包问题享元模式在源码中的使用享元模式的注意事项和细节推荐一篇享元模式的好文章需求传统解决方式弊端享元模式介绍类图对原理图的说明即 模 式的角色及职 责1)FlyWeight 是抽象的享元角色 , 他是产品的抽象类 , 同时定义出对象的 外部状态 和 内部状态 后面介绍 ) 的接口或实现2)ConcreteF...原创 2019-12-06 22:40:29 · 158 阅读 · 0 评论 -
设计模式(17) -- 外观模式
文章目录需求传统实现弊端与解决思路外观模式基本介绍外观模式原理类图外观模式解决影院管理代码:外观模式在MyBatis框架应用的源码分析外观模式的注意事项和细节推荐一篇好文章需求传统实现弊端与解决思路外观模式基本介绍外观模式原理类图外观模式解决影院管理代码:外观类HomeTheaterFacade子系统类DVDPlayer测试类运行结果:外观...原创 2019-12-05 16:20:34 · 111 阅读 · 0 评论 -
设计模式(16) -- 组合模式
文章目录需求传统实现传统方案问题分析组合模式基本介绍组合模式解决的问题代码实现需求传统实现传统方案问题分析组合模式基本介绍组合模式原理类图对原理结构图的说明即 组合模式的角色及职 责1)Component : 这是组合中对象声明接口,在适当情况下,实现所有类共有的接口默认行为 用于访问和管理 Component 子部件 , Component 可以是抽象类或者接口...原创 2019-12-03 20:44:48 · 205 阅读 · 0 评论 -
设计模式(15) -- 装饰者模式
文章目录需求解决方案1:方案2方案2问题分析装饰者模式定义装饰者模式原理装饰者模式解决星巴克咖啡订单装饰者模式下的订单:2份巧克力+1份牛奶的 LongBlack装饰者模式咖啡订单项目应用实例装饰者模式在JDK应用的源码分析网上一篇写的好的文章需求星巴克咖啡订单项目解决方案1:方案2如果加多份调料,可以吧boolean返回改为int返回份数。方案2问题分析装饰者模式定义...原创 2019-11-30 15:55:54 · 170 阅读 · 0 评论 -
设计模式(14) -- 桥接模式
文章目录需求:手机操作问题传统方案解决手机操作问题引出的问题桥接模式:基本介绍桥接模式Bridge原理类图桥接模式解决手机操作问题类图桥接模式在JDBC的源码剖析桥接模式的注意事项和细节桥接模式其它应用场景推荐一篇介绍桥接模式的好文章需求:手机操作问题传统方案解决手机操作问题引出的问题桥接模式:基本介绍桥接模式Bridge原理类图原理:类图说明1)Client 类:桥接模...原创 2019-11-25 20:08:20 · 133 阅读 · 0 评论 -
设计模式(13) --适配器模式(3种实现方式)
文章目录基本介绍适配器模式工作原理三种实现方式类适配器模式注意:对象适配器总结接口适配器基本介绍适配器模式工作原理三种实现方式类适配器模式代码:Voltage220V//被适配的类public class Voltage220V { //输出220V的电压 public int output220V() { int src = 220; System.out....原创 2019-11-21 10:44:02 · 228 阅读 · 0 评论 -
设计模式(12) -- 建造者模式
文章目录需求传统写法优缺点建造者模式介绍建 造者模式的四个角 色改进方案类图代码类似建造者模式的jdk源码总结需求传统写法AbstractHousepublic abstract class AbstractHouse { //打地基 public abstract void buildBasic(); //砌墙 public abstract voi...原创 2019-11-20 00:02:07 · 200 阅读 · 0 评论 -
设计模式(11) -- 原型模式
文章目录需求传统写法客户端测试Client优缺点:原型模式基本介绍UML类图原型模式解决决克隆羊问题原型模式在Spring框架中源码分析浅拷贝深拷贝重写clone方式通过对象的序列化实现 (推荐)原型模式的注意事项和细节需求现在有一只羊tom 姓 名为 : tom, 年龄为:1 颜 色为:白色,请编写程序创建和 tom羊属性完全相同的5只羊 。传统写法sheeppublic class...原创 2019-11-18 14:14:00 · 156 阅读 · 0 评论 -
设计模式(10) -- 工厂设计模式(简单工厂,工厂方法,抽象工厂模式)
文章目录简单工厂模式需求1:传统实现优缺点:简单工厂方式实现基本介绍工厂方法模式需求2:实现抽象工厂模式简单工厂模式需求1:看一个披萨的项目:要便于披萨种类的扩展,要便于维护1)披萨的种类很多,比如GreekPizz 、 CheesePizz 等2)披萨的制作有 prepare bake, cut, box3)完成披萨店订购功能。传统实现Pizza 类//将Pizza 类做成抽...原创 2019-11-15 22:28:47 · 314 阅读 · 0 评论 -
设计模式(9) -- 设计模式分类和单例模式(8种实现)
文章目录设计模式分类单例模式1)饿汉式 - 静态常量`优缺点:`2)饿汉式 - 静态代码块`优缺点:3)懒汉式- 线程不安全优缺点![在这里插入图片描述](https://img-blog.csdnimg.cn/20191114221438978.png)4)懒汉式 - 线程安全,同步方法优缺点![在这里插入图片描述](https://img-blog.csdnimg.cn/2019111422...原创 2019-11-14 22:18:10 · 158 阅读 · 0 评论