
设计模式
知春秋
不忘初心,方得始终。初心易得,始终难守。
展开
-
设计模式之工厂方法模式(三)
工厂方法模式简介 工厂方法模式(Factory Method)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品。工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建...原创 2018-02-08 21:41:16 · 232 阅读 · 0 评论 -
设计模式之备忘录模式(十五)
备忘录模式源码下载地址:https://github.com/superRabbitMan/pattern-demo/tree/master/memento-demo简介 备忘录(Memento):在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。通用类图及说明实现方式 生活中最常用的计算器自己拥有...原创 2018-04-29 23:23:59 · 263 阅读 · 0 评论 -
设计模式之桥梁模式(十七)
桥接模式简介桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。通用类图实现方式 桥接模式其实是基于聚合的实现方式。在日常开发中,我们需要扩展父类功能的时候,常常使用...原创 2018-05-20 18:48:43 · 190 阅读 · 0 评论 -
设计模式之适配器模式(十四)
适配器模式简介 适配器模式是将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 例如我们对接其他公司系统的时候他们返回的数据和我们的实体类可能有出入,例如自己公司的用户的电话信息,只有一个电话。公司要同步别人系统的用户数据到自己公司系统,被人设计的用户有多个联系电话,这个时候拿到的数据是不一致的,是否可以通...原创 2018-04-14 10:47:57 · 619 阅读 · 2 评论 -
设计模式之状态模式(十三)
状态模式简介 当一个对象的内在状态改版的时候,允许改变其行为,这个对象看起来像是改变了其类。简单来说就是我们在编程的时候可能会根据对象的状态去写很多的判断语句if else。那么状态模式就是将判断的语句封装到一个对象中,这样对于扩展和改变状态的判断都非常的方便。类图实现方式 汽车我们都知道有油箱,但是对于油箱还有多少的油量这个就是某种状态。对于常规的代码实现要判断油...原创 2018-04-05 16:10:42 · 220 阅读 · 0 评论 -
设计模式之外观模式(十一)
外观模式(门面模式)简介外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。类图实现方式 例如公司存在4个子系统,那么如果需要调用4个系统的方法,在没有使用外观模式的情况下调用是这样的。package com.rabbit.pattern.facade;/** * Created by vip on 2018...原创 2018-03-28 14:22:10 · 166 阅读 · 0 评论 -
设计模式之观察者模式(十二)
观察者模式(发布-订阅模式)简介 观察者模式动机,如果我们将一个系统分割成一系列相互协作的类这样带来的副作用就是要维护相关对象间的一致性。这样使得类紧密耦合,并且为维护/扩展和重用带来不便。观察者模式的关键对象是“观察对象”和“观察者”。一个观察对象可以有任意数目的观察者依赖于它。这样在观察对象发生变化的时候就可以通知所有依赖的观察者去做自己想做的事情。现在很流行的消息队列可以看作...原创 2018-04-01 22:50:42 · 261 阅读 · 0 评论 -
设计模式之建造者模式(十)
建造者模式简介 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。类图实现方式 以我们的最常用的电脑为例,电脑是一个抽象的概念,但是具体型号组装好的电脑就是一个个实体。我们组装电脑...原创 2018-03-19 14:27:38 · 2136 阅读 · 0 评论 -
设计模式之代理模式(七)
代理模式简介 代理模式定义:为被代理对象提供代理以控制该对象的访问权限。例如我们想找明星出演商业活动的时候是不可以直接联系本人的,是需要联系经纪人。代理模式通用类图入门案例一 例如我想找颖宝去演出某部电视剧,颖宝平时的工作很忙,如果什么事情都要自己处理的话,就会显得很劳累。所以才有明星经纪人的出现,那么经纪人其实就是颖宝的代理人的。代理颖宝处理一部分事情,你要找颖宝...原创 2018-03-04 11:18:33 · 2145 阅读 · 0 评论 -
设计模式之模板方法模式(九)
模板方法模式简介 模板方法模式是将公用的代码抽取到父类,并定义可变部分由子类实现的一种模式。实现方式 玩家玩游戏的时候会给角色配置服装,那么不可避免给每个玩家都实例一个Player对象,并且设置服装。普通方式实现package com.rabbit.pattern.template;/** * Created by vip on 2018/3/9. */p...原创 2018-03-11 10:38:19 · 283 阅读 · 0 评论 -
设计模式之原型模式(八)
原型模式简介 原型模式其实就是通过实例创建另一个对象,而且不需要知道任何的创建细节。Cloneable接口 cloneable接口没有任何方法,如果一个类实现了cloneable接口,那么Object.clone()方法就可以合法的对该类实例进行字段的负责。如果一个类没有实现cloneable接口,调用Object.clone()方法,那么就会抛出CloneNotS...原创 2018-03-08 19:52:50 · 321 阅读 · 0 评论 -
设计模式之策略模式(五)
策略模式简介策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且算法之间可以相互替换。策略模式使得算法独立于使用它的客户端。类图实现方式案例场景:实现加/减/乘/除4种运算法则。对于这4种运算场景,其实可以说是4种算法,因此可以使用策略模式使用。其实虽然说是策略模式合适于算法,但是对于其它不同的业务逻辑也是可以使用的不一定说是算法才可以使用。例如:1)商城系统中的各种促销活动,每种促销活动...原创 2018-02-19 01:02:35 · 259 阅读 · 0 评论 -
设计模式之装饰者模式(六)
装饰者设计模式简介 装饰者模式是一种更加灵活的扩展类的功能的方法。传统的拓展一个类的功能最常用的就是继承(JAVA的三大特性之一)。但是如果修改原有的类,那么久违背了“开闭原则”。如果一味的为了新功能就去使用继承结构,那么就会导致子类膨胀,难以维护。装饰者模式就是在不使用继承的情况下扩展类的功能,而且可以灵活的组合调用。类图实现方式package com.rabbit.patter...原创 2018-02-27 20:31:30 · 365 阅读 · 0 评论 -
设计模式之工厂模式(二)
工厂模式简介 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用共同的接口来指向新创建的对象。这样调用者只知道工厂方法,而不知道具体的对象。屏蔽产品的具体实现,调用者只关心产品的接口。使用场景 当您准备...原创 2018-02-07 23:54:42 · 288 阅读 · 0 评论 -
设计模式之单例模式(一)
原创 2018-02-07 23:25:17 · 214 阅读 · 0 评论 -
设计模式之抽象工厂模式(四)
抽象工厂模式简介 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指...原创 2018-02-11 16:45:25 · 349 阅读 · 0 评论 -
设计模式之组合模式(十六)
组合模式简介 组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用于对单个对象和组合对象的使用具有一致性(继承统一接口)。统一类图Leaf(树叶) 表示“内容”的角色,该角色中不可以放入其他对象,表示没有下级的意思。Composite(复合物) 表示容器的角色,可以放入其他Leaf角色和Composite...原创 2018-05-15 16:14:10 · 225 阅读 · 0 评论