设计模式
traveler100
吾行吾道,虽远必至。
展开
-
【设计模式】详解访问者(Visitor)模式-有多段代码出没
前方有多段代码出没,祝您理解访问者模式...原创 2020-09-29 22:23:01 · 316 阅读 · 0 评论 -
【设计模式】Prototype原型模式-一段关于对象拷贝的故事
原型模式原型(Prototype)模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。比如,用过VMware安装过虚拟机的可能知道,我们可以先安装一个模板机,然后通过克隆模板机创建出很多虚拟机出来,这种采用复制的方法大大提升了效率。再比如,群发消息的场景,我们希望群发出去的东西title随着发送对象的不同而改变,这时可以构造出一个消息对象,群发复制这个对象,然后title进行个性化定制。用消息原创 2020-09-27 22:05:01 · 187 阅读 · 0 评论 -
【设计模式】1分钟整明白什么是Builder建造者模式
建造者模式(Builder Pattern)也叫做生成器模式,其定义:Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.(将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。)原创 2020-08-21 22:20:12 · 535 阅读 · 0 评论 -
【设计模式】Observer 观察者模式浅析
观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscribe),它是一个在项目中经常使用的模式。原创 2020-08-16 10:53:05 · 161 阅读 · 0 评论 -
【设计模式】责任链模式-号称倒数第二难的设计模式终于搞明白了
引入汽车生产过程中,必然要对汽车的各个部件,比如发动机、变速箱、车身等等进行严格的质量检查,对不合格的部件进行过滤。过滤检查汽车部件一般情况下,我们这样写就能实现了:public class Client { public static void main(String[] args) { Client client = new Client(); Request req = new Request(); req.setReqMsg("检原创 2020-08-13 09:42:09 · 134 阅读 · 0 评论 -
【设计模式】慎用多层继承,不妨试试装饰器模式
引入玩过足球模拟经营类游戏的朋友,应该了解如何管理球队。其中对球队球员的转会,买入卖出尤其重要。我们来模拟一下这个场景,球队经理Manager需要对球队需要的各类球员进行管理,其中的一环是要分析球员转会市场价,假设不同类型的球员转会费是不同的。我们抽象出一个运动员出来,运动员有各自的计算转会费TransferFee的方法;其中足球运动员继承运动员。开始球队经理想要了解足球运动员的市场价格情况,这一场景我们可以通过如下类图表示:public class Player { publi原创 2020-08-12 12:05:49 · 302 阅读 · 0 评论 -
【设计模式】代理模式那些事儿:静态代理,动态代理,JDK的动态代理,cglib,Spring AOP
吹NB不负责:这可能是你从未见过的全新版本!引言《雪地里的小画家》下雪啦,下雪啦!雪地里来了一群小画家。小鸡画竹叶,小狗画梅花,小鸭画枫叶,小马画月牙。不用颜料不用笔,几步就成一幅画。青蛙为什么没参加?他在洞里睡着啦。还记得上小学时候的这篇课文吗?这是我记忆深刻的一篇语文课文,哈哈,在这里提出来让大家也回忆一下小学的故事。这里面提到了小鸡,小狗,小马,小鸭,青蛙,他们都会在雪地里画画,我们以这些小动物为对象,来说明一些问题吧。静态代理这些会画画小动物我们抽象出一个画家.原创 2020-08-07 17:37:20 · 154 阅读 · 0 评论 -
【设计模式】几需体验三欢钟,里造会干我一样理解Facade和Mediator模式
Facade 门面模式我要办个转户口现有Client一枚,需要在城里落户,要转户口,现在有关部门要求Client准备一系列的材料。我们精简一下部门,假设只需要跑材料部门、核验盖章部门和制证发证部门三个部门就行了。现在需要Client先去材料部门领取材料,然后填写完成后到核验部门盖章,最后拿着盖着的材料去制证部门领证,这样一套按照顺序走下来,业务才能算完成。代码模拟材料部门/** * 材料部门,给办证者提供必要的材料 * @author 行百里者 */public class Stu原创 2020-08-07 09:40:32 · 149 阅读 · 0 评论 -
【设计模式】工厂系列-FactoryMethod,AbstractFactory,Spring IOC
今天来说一下设计模式的工厂系列。这一系列主要包括工厂方法、抽象工厂,最后再看看Spring的利器IOC。何为工厂任何可以产生对象的方法或类,都可以叫做工厂。so,单例模式 getInstance 也是一种工厂。那为什么有了new之后,还要工厂呢?灵活控制生产过程;权限、日志、管理…下面我就用生产防护用品来举例说明为什么要使用工厂:任意定制口罩继承ProtectiveEquip任意定制生产过程ProtectiveEquip xxxFactory.create..原创 2020-08-05 17:45:42 · 112 阅读 · 0 评论 -
【设计模式】策略模式之“这不就是if-else吗”
公司要扩大规模,目前需要购买一批汽车,还要招聘一批保安,老板指示暂时只想看新车,只需要给他看按照价格排好序的新车列表就行;保安候选人按照安保经验排好序给他一个列表。汽车数据,还有保安候选人的数据已经放在了程序员的面前,你只需要给我个列表就好了。基于这个需求,我们自然而然的会想到排序啊。开始之前,我们先来看一下jdk中的comparable接口和comparator接口,可参考 文档描述comparable接口java.langInterface ComparableT - the typ.原创 2020-08-04 17:06:50 · 201 阅读 · 0 评论 -
【设计模式】浅析单例模式的8种写法
单例模式保证类只有一个实例。当我们的类只需要有一种实例的时候就可以用这种模式。比如各种管理类Manager,各种工厂类Factory单例模式的8种写法饿汉式/** * 类加载的时候就实例化一个实例,JVM保证线程安全 * 也称饿汉式 * 该方式简单实用 * @author traveler100 */public class Singleton_1 { private static final Singleton_1 INSTANCE = new Singleton_原创 2020-07-26 23:44:57 · 79 阅读 · 0 评论