
Java设计模式理解应用
对设计模式的学习理解应用
phs999
这个作者很懒,什么都没留下…
展开
-
软件开发设计思想与6大软件设计原则、23种设计模式目录-设计模式
软件开发设计思想与6大软件设计原则、23种设计模式目录及链接原创 2020-08-30 20:41:47 · 5733 阅读 · 0 评论 -
state状态模式-设计模式-行为型
1、需求场景某银行要开发一套信用卡业务系统,银行账户(Account)是该系统的核心类之一,通过分析,账户存在三种状态,且在不同状态下账户存在不同的行为,具体说明如下: (1) 如果账户中余额大于等于0,则账户的状态为正常状态(Normal State),此时用户既可以向该账户存款也可以从该账户取款; (2) 如果账户中余额小于0,并且大于-2000,则账户的状态为透支状态(Overdraft State),此时用户既可以向该账户存款也可以从该账户取款,但需要按天...原创 2020-08-30 17:29:39 · 910 阅读 · 0 评论 -
TemplateMethod模板方法-设计模式-行为型
定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。固定不变的方法用final限制,必须实现的用抽象方法,可以选择的重写或不重写则可以实现一个样例标准方法,由子类决定是否重写。package behavioral.templatemethod.example2;public abstract class ACourse { protected final void makeCourse(){ this.makePPT(); this.makeV...原创 2020-08-29 23:45:28 · 142 阅读 · 0 评论 -
Memento备忘录模式、序列化与反序列化-设计模式-行为型
通过写博客文章保存与回退的场景学习备忘录模式,同时介绍序列化与反序列。原创 2020-08-29 22:47:56 · 244 阅读 · 0 评论 -
Prototype原型模式-设计模式-创建型
介绍了Prototype原型模式设计模式的实现方式和关键点。深拷贝与浅拷贝问题如果不不注意,容易导致程序问题。最后给出了ArrayList中实现原型模式的方法。原创 2020-08-27 23:24:30 · 237 阅读 · 0 评论 -
bridge桥接模式-设计模式-结构型
1、场景毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12 = 36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为3 + 12 = 15,远小于36,却能实现与36支蜡笔同样的功能。如果增加一种新型号的画笔,并且也需要具有12种颜色,对应的蜡笔需增加12支,而毛笔只需增加一支。https://blog.youkuaiyun.com/LoveLion/article/details/7464183分离场景...原创 2020-08-24 08:31:55 · 343 阅读 · 0 评论 -
Adapter/Wrapper适配器模式/接口转换器-设计模式-结构型
Adapter/Wrapper适配器模式/接口转换器-设计模式-结构型原创 2020-08-23 23:59:22 · 351 阅读 · 0 评论 -
Builder建造者/构建者模式-设计模式-创建型
构建者模式builder原创 2020-08-23 12:15:57 · 214 阅读 · 0 评论 -
通俗讲解visitor访问者模式及其与策略模式的比较-设计模式-表现型
电脑装机的场景学习访问者模式,并比较学习策略模式。原创 2020-08-21 01:22:35 · 1422 阅读 · 0 评论 -
Iterator迭代器模式与JDK实现分析应用-设计模式-行为型
Iterator迭代模式实现的类图与角色介绍,jdk中的源码实现原创 2020-08-19 06:00:55 · 236 阅读 · 0 评论 -
proxy代理模式-设计模式-结构型
静态代理与动态代理,JDK动态代理与cglib原创 2020-08-16 19:10:40 · 268 阅读 · 0 评论 -
flyweight享元模式/轻量级模式-设计模式-结构型
享元模式核心原理介绍学习及jdk源码应用介绍。原创 2020-08-14 01:51:02 · 190 阅读 · 0 评论 -
通俗理解组合模式(Composite)-设计模式-结构型
通过文件夹及文件、课程包与课程的例子,理解整体与局部的关系,从而理解组合模式。另外通过对JDK和Mybatis代码具体,展示该设计模式的应用场景。原创 2020-08-11 23:21:35 · 576 阅读 · 0 评论 -
通俗讲解Observer观察者模式(监听者模式)-设计模式-行为型
通俗讲解观察者模式的核心原理,并给出实际场景应用代码与源码解析。观察者模式的核心思路就是主动广播通知。维护一个观察者的列表,即被通知者的列表,然后根据事件源的某些状态变化,触发通知操作。然后观察者接收到通知后做出相应的操作。原创 2020-08-09 19:01:14 · 928 阅读 · 0 评论 -
6.使用装饰者模式扩展坦克代码-设计模式之坦克大战
复习总结装饰者模式的实现原理以及与继承的区别,同时介绍在坦克大战代码中应用中出现的问题,相应设计模式要在特定场景下发挥作用,不能为了设计模式而设计模式。装饰者模式的核心就是将待修饰类对象传参到装饰类,然后得到一个新的、更加强大、可以支持更多功能的修饰后的类对象。...原创 2020-08-08 11:16:07 · 465 阅读 · 0 评论 -
通俗详细讲解装饰者设计模式-设计模式-结构型
使用煎饼果子加蛋、加两个蛋、加辣椒等等具体需求的场景,给出使用装饰者模式的优化代码,体会该设计模式的优点。同时看一下JDK中的IO源码是怎么应用装饰者模式的,原创 2020-08-05 22:46:38 · 251 阅读 · 0 评论 -
5.使用中介者模式和责任链模式优化坦克大战代码-设计模式之坦克大战
复习总结中介者模式和责任链模式,并且介绍在坦克大战中的应用场景及优化逻辑,最终实现游戏对象之间的解耦和进一步满足开闭原则减少对原来代码的改动。原创 2020-07-29 23:18:14 · 355 阅读 · 0 评论 -
Chain of Responsibility Pattern责任链模式/职责链模式是怎么一回事?-设计模式
通过报销单审批、注册信息校验等等场景,理解责任链模式是怎么一回事。同时通过代码实现一个具体的场景,并通过Servlet中Filter过滤器的例子,加深对责任链模式的理解。原创 2020-07-29 00:16:59 · 259 阅读 · 0 评论 -
4.使用facade外观模式优化坦克大战代码-设计模式之坦克大战
使用facade外观模式简化TankFrame类,将炮弹类、坦克类、爆炸类之间的逻辑关系、碰撞检测等进行封装,封装为GameModelFacade类。原创 2020-07-19 13:03:27 · 286 阅读 · 0 评论 -
Mediator中介者模式/调停者模式-设计模式
Mediator中介者模式,又称调停者模式,实现了多个类之间交互的解耦。原创 2020-07-14 05:27:26 · 248 阅读 · 0 评论 -
facade外观模式/门面模式(通过积分商城的例子理解外观模式)-设计模式
facade外观模式,又称门面模式,通过积分商城的例子理解外观模式。原创 2020-07-12 14:59:42 · 441 阅读 · 0 评论 -
3.抽象工厂设计模式在坦克大战中的应用-设计模式之坦克大战
坦克大战使用抽象工厂模式优化代码,代码调整中的一些体会感悟。原创 2020-07-08 23:54:31 · 381 阅读 · 1 评论 -
抽象工厂设计模式-设计模式
抽象工厂设计模式,优点缺点、代码实现、在Mybatis源码中的应用。原创 2020-07-04 17:19:25 · 450 阅读 · 0 评论 -
工厂方法与抽象工厂设计模式区别与对比-设计模式
工厂方法模式的介绍看这里:https://blog.youkuaiyun.com/phs999/article/details/107028236工厂方法与抽象工厂的区别在于,工厂方法是对产品维度的扩展,抽象工厂是对产品一族进行扩展。同一产品族都是由同一个工厂生产的,位于不同的产品等级结构产品族:美的生产的 洗衣机 空调属于同一产品族,在坦克大战里,坦克、炮弹、爆炸效果等属于一个产品族,不同的产品族可能对应了不同的界面效果。我们需要整体扩展一个界面UI的产品族时,可以使用抽象工厂设计模式。产原创 2020-07-04 14:24:38 · 581 阅读 · 0 评论 -
工厂方法设计模式-设计模式
工厂方法设计模式,介绍、代码示例、源码应用原创 2020-06-30 07:06:56 · 318 阅读 · 1 评论 -
简单工厂设计模式
简单工厂设计模式是创建型的设计模式,但不属于GOF23种设计模式优点是只需要传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节。缺点是工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑。基本介绍完成后,会给出优化版的代码,以更好的支持新增其他产品种类’原创 2020-06-27 01:11:59 · 134 阅读 · 0 评论 -
2.应用策略模式和单例模式-设计模式之坦克大战
前面对策略模式和单例模式都进行了理论化的总结,下面是这两种设计模式在坦克大战中的使用。在应用这两种设计模式之前,代码在这里:https://github.com/phs999/DesignPatterns/tree/e6d14348afa089398fac14dddc5f77315b1e4bb2其中Tank类中fire()方法,控制了坦克发射炮弹的位置和方式。但这样每个Tank对象的fire()方法都是一样的,见下面的Tank类。但具体程序中可能有不同的需求。比如,敌方坦克没有人控制的话,需要自原创 2020-06-23 00:26:32 · 489 阅读 · 0 评论 -
策略模式(示例1:通过实现Comparator接口定义不同的比较策略;示例2:促销策略)-设计模式
策略模式(示例1:通过实现Comparator接口定义不同的比较策略,实现普通对象排序;示例2:促销策略的定义与扩展)-设计模式原创 2020-06-21 19:37:18 · 458 阅读 · 0 评论 -
单例模式详细总结(优缺点、可用方案、演进与原理)-设计模式
饿汉式单例模式、懒汉式单例模式、枚举单例模式的优缺点,单例模式多版本演进与原理。涉及线程安全(多线程)、反序列化、反射攻击等原创 2020-06-10 00:28:42 · 423 阅读 · 0 评论 -
1.基础完成版本-设计模式之坦克大战
1、版本地址https://github.com/phs999/DesignPatterns/tree/9af503c47d25dfea6a0a848438725afbc3e4a4242、实现效果(1)敌方坦克随机移动;(2)敌方坦克随机发射炮弹;(3)坦克运动范围边界控制;(4)我方子弹遇到敌方坦克后,子弹与坦克消失;3、评价功能基本实现,但是代码之前耦合较多,互相调用互相依赖。4、关键代码package phs999.tank;import java原创 2020-06-07 21:40:14 · 361 阅读 · 0 评论 -
0.开篇-设计模式学习之坦克大战
1、目的通过一个项目的逐步迭代,来进行设计模式的思想学习。2、参考[1] 马士兵-坦克大战[2] 慕课网-java设计模式精讲3、我的代码地址https://github.com/phs999/DesignPatterns4、关键点与关系图首先实现了以下几个关键点:(1)实现一个可关闭窗口;(2)实现方框坦克按方向键移动,不按方向键静止;(3)实现子弹类发射子弹。各类之间的关系图如下:5、主要代码package phs999.tank;...原创 2020-05-31 14:03:13 · 366 阅读 · 0 评论