
设计模式
文章平均质量分 68
Turing·
不积小流无以成江海
展开
-
基于SpringIOC容器的工厂模式
背景:最近做了一个项目,平台适配多个三方广告商(app内部广告位),平台发出广告位大小、类型请求,三方接口返回广告。为了满足不断增长的三方广告商(接口规格都不一样),我们在实现的时候采用工厂模式来进行适配。这也是我第一次在实战中使用工厂模式,感觉扩展性得到了很大的加强。原理:基于Spring的ApplicationContextAware接口实现setApplicationContext方法。源代码地址:https://github.com/qycwudi/rocketMQObject/tree原创 2021-09-01 14:50:18 · 385 阅读 · 0 评论 -
线程安全的单例模式Single
俩种写法class People{ private static People people; //构造器私有化 private People(){ } public static synchronized People getPeople(){ if(people==null){ people = new People(); return people; } .原创 2020-06-07 21:42:30 · 156 阅读 · 0 评论 -
行为型模式~状态模式
定义:又称状态对象模式,该对象允许一个对象在其内部状态改变时改变其行为。当一个对象内部状态改变时允许改变其行为,这个对象看起来向改变了其类型。状态模式的核心就是封装,状态的变更引起行为的变动,从外部看就好像该对象对应的类发生改变一样。角色: 抽象状态:频道,封装环境对象的一个特定状态所对应的行为 具体状态:CCTV1,实现环境的一个状态所应对的行为 ...原创 2019-06-26 21:58:05 · 98 阅读 · 0 评论 -
行为型模式~解释器模式
定义:是一种按照规定语法对表达式进行解析的方案给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子角色:抽象表达式:定义有参数的interpret()方法 终结符表达式:取值 非终结符表达式:+-*/ 环境:存值 客户端优点:简单的语法分析工具 扩展性,修改语法只需要修改相应的非终结符表达式即可,若扩展语法只需要增加非终...原创 2019-06-26 23:28:56 · 91 阅读 · 0 评论 -
混合设计模式~工厂策略模式
需求:固定金额 自由金额 固定消费场所下的消费是从IC卡中固定账户金额中扣除,不够时从自由金额里扣除 非固定消费场所下的消费都从IC卡中自由账户金额扣除实例:一卡通package 工厂策略模式;public class Card { private String cardNO; private double steadyMoney = 0; private double...原创 2019-06-27 14:19:37 · 389 阅读 · 0 评论 -
结构型模式~代理模式
定义:别称 委托模式为其他对象提供一种代理以控制这个对象的访问。角色抽象主题:是真实主题和代理主题共同的接口,以便在任何可以使用真实主题的地方都可以使用代理主题 真实主题:也叫被委托角色,被代理角色,是业务逻辑的具体执行者 代理主题:也叫委托类,代理类该角色负责控制对真实主题的引用代理模式的种类:远程代理:为一个位于不同的地址空间的对象提供一个局部代表对象,可以是...原创 2019-06-24 18:32:31 · 97 阅读 · 0 评论 -
结构型模式~装饰模式
定义:动态的给一些对象添加一些职责,就增加概念来说,装饰模式比生成子类更加灵活。角色:抽象构建角色(接口):规范需要装饰的对象(原始对象) 具体构建角色:实现接口,定义一个需要装饰的原始类 装饰角色(抽象类):该角色持有一个构建对象的实例,并定义一个与抽象接口一致的接口)(继承接口) 具体装饰角色:负责对构建对象进行装饰优点:装饰类和被装饰类可以独立发展,而不会相互耦合。...原创 2019-06-24 19:12:27 · 140 阅读 · 0 评论 -
结构型模式~适配器模式
定义:又叫做变压器模式,变压器把一种电压转换为另一种电压将一个类的接口转换为客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的俩个类能够一起工作将一个接口或类转换成其他接口或者类,适配器相当于一个包装器。角色:目标角色:该角色定义要转换成目标接口 源角色:需要被转换成目标角色的源角色 适配器角色:适配器模式的核心,通过继承或者类关联的方式,将源角色转换为...原创 2019-06-24 19:39:03 · 95 阅读 · 0 评论 -
结构型模型~组合模式
定义:组合模式也叫合成模式,用来描述整体与部分的关系将对象组合成树形结构以表示“部分—整体”的层次结构,使得用户对单位对象和组合对象的使用具有一致性。角色:抽象构件:该角色定义参加组合对象的共有方法和属性,规范一些默认的行为接口。 叶子构件:叶子对象,旗下没有分支 树枝构件:代表参加组合的,旗下有分支的树枝对象,他的作用是将树枝和叶子组合成一个树形结构,并定义出管理子类对象的方...原创 2019-06-24 21:59:58 · 336 阅读 · 0 评论 -
结构型模型~桥梁模式
定义:桥梁模式也称为桥接模式将抽象和现实解耦,使得俩者可以独立的变化角色:抽象化角色:该角色抽象化的给出定义,并保存一个实现化对象的引用。 实现化角色:给出实现话接口,但是不给处具体的实现 修正抽象化角色:该角色扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正 具体抽象化角色:对实现化角色接口种的方法进行具体实现优点:熟悉该原则对于理解面向对象设计原则...原创 2019-06-24 23:01:17 · 244 阅读 · 0 评论 -
结构型模式~外观模式
定义:外观模式也叫门面模式要求一个子系统的外部与内部的通信必须通过一个统一的对象进行,外观模式提供一个高层次的接口,使得子系统更容易使用角色:外观角色:客户端可以调用该角色的方法,该角色知晓相关子系统的功能和责任,本角色会把所有客户端发来的请求委派到相应的子系统,该角色没有实际的业务逻辑,只是一个委托类 子系统角色:可以同时有多个子系统,每个子系统都不是一个单独的类,而是一...原创 2019-06-24 23:40:36 · 123 阅读 · 0 评论 -
结构型模式~享元模式
定义:享元模式是池技术的重要实现方式,降低大量重复的、细粒度的类在内存中的开销使用共享对象可以有效地支持大量的细粒度的对象。享元模式是以共享的方式高效的支持大量的细粒度对象,享元对象能做到共享的关键是区分内部状态和外部状态内部状态是存储享元对象内部的、可以共享的信息,而且不会随环境变化而改变 外部状态是随环境改变而改变且不可以共享的状态,享元对象的外部状态必须由客户端保存,并在享...原创 2019-06-24 23:57:18 · 124 阅读 · 0 评论 -
设计模式的意图和适用性
目录创建型设计模式一.抽象工厂 Abstract Factory二.生成器 Builder三.工厂方法 Factiry Method四.原型 Prototype五.单例 Singleton结构型设计模式一.适配器 Adapter二.桥接 Bridge三.组合 Composite四.装饰 Decorator五.外观 Facade六.享元...原创 2019-10-05 19:37:03 · 1135 阅读 · 0 评论 -
行为型模式~访问者模式
定义:目的时封装一些施加于某些数据结构元素之上的操作,一但这些操作需要修改,接受这些操作的数据结构则可以保持不变。角色:抽象访问者:定义CPU和硬盘的访问(属性) 具体访问者:实现访问 硬件类型和运行 抽象元素:定义硬件型号,运转,访问 参数(抽象访问者) 具体元素:实现CPU和硬盘的抽象方法 结构对象:电脑,实例化CUP和硬盘对象,定义访问方法 参数(抽象访问...原创 2019-06-26 20:43:55 · 128 阅读 · 0 评论 -
创建型模式~原型模式&与正常new对象比较
三角色客户: 提出创建对象请求 抽象原型:是一个抽象角色,由一个抽象接口或抽象类实现,给出所有的具体原型类所需要的接口。 具体原型:该角色是被复制的对象,必须实现抽象原型接口克隆: 实现Cloneable接口 覆盖object的clone方法 浅克隆Shollow Clonepublic Object clone() { Object clo...原创 2019-06-23 20:00:07 · 561 阅读 · 0 评论 -
行为型模式~模板方法模式
定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不用改变算法的结构即可重新定义该算法的某些特定步骤角色:抽象模板角色:定义一个或多个抽象操作,以便让子类实现;这些抽象操作是基本操作,是一个顶级逻辑的组成步骤,还需要定义并实现几个模板方法,这些模板方法一般是具体方法,即一个框架,实现对基本方法的调度,完成固定的逻辑 具体模板角色:该角色实现抽象模板中定义的一个或...原创 2019-06-25 16:13:33 · 115 阅读 · 0 评论 -
行为型模式~命令模式
定义又称行动模式,交易模式将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销或恢复功能。角色:命令角色:该角色声明一个给所有具体命令类的抽象接口,定义需要执行的命令 具体命令角色:该角色定义一个接收者和行为者之间的弱耦合,实现命令方法,并调用接收者的相应操作 调用者:该角色负责调用命令对象执行请求 接收者:该角色负责...原创 2019-06-25 17:17:10 · 112 阅读 · 0 评论 -
行为型模式~责任链模式
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。责任链重点在于链上,由一条链处理相似请求,在链中决定谁来处理这个请求,并返回相应的结果。角色:抽象处理者角色:该角色对请求进行抽象,定义一个方法以设定和返回对下一个处理者的引用 具体处理者角色:该角色接到请求后,可以选择将请求处理掉,...原创 2019-06-25 18:33:15 · 99 阅读 · 0 评论 -
行为型模式~策略模式
定义:也叫政策模式定义一组算法,将每个算法都封装起来,并且使它们可以相互转换角色:环境角色:上下文角色,相当于调用者 抽象策略角色:对决策略,算法进行抽象,定义每个决策或算法必须有的方法和属性 具体策略:抽象的具体实现优点:策略模式提供了管理相关的算法族的办法。 提供了可以替换继承关系的办法 避免出现多重条件转换语句缺点:客户端必须知道所有的策略类,并决定...原创 2019-06-25 19:06:50 · 106 阅读 · 0 评论 -
行为型模式~迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节,为容器服务角色:抽象迭代器:负责定义访问遍历集合的接口 next hasnext 具体迭代器:实现Iterator接口 完成遍历 抽象聚集:创建迭代器 具体聚集:实现接口,定义容器,实现getElement方法 读取容器vector.get(index)实例:package 迭代器模式;...原创 2019-06-25 19:58:43 · 126 阅读 · 0 评论 -
设计模式~设计原则+模型概念
单一职责原则(Single Responsibility Principle) SRP定义:一个类,应当只有一个引起它变化的类。一个类只有一个职责。优点:降低类的复杂性 提高类的可读性 提高代码的可维护性和复用性 降低因变更引起的风险应用:Java EE的分层框架模式里氏替换原则 (Liskov Substitution principle)LSP...原创 2019-06-23 01:32:49 · 499 阅读 · 0 评论 -
行为型模式~中介者模式
定义:也称为调停者模式,用一个中介对象封装一系列对象的交互,中介者对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。角色:抽象中介者:定义出同事对象到中介者对象的统一接口,用于各同事角色对象的通信 具体中介者:实现抽象中介者,依赖于各个同事角色,通过协调各同事角色实现协作行为 抽象同事:定义出中介者到同事对象的接口,同事对象只知道中介者而不清楚其余同事对...原创 2019-06-26 14:00:17 · 99 阅读 · 0 评论 -
创建型模式~单例模式
定义:确保一个类只有第一个实例,而且自行实例化,向整个系统提供这个实例可以建立在目录,数据库连接等需要单线程操作的场合,用于实现对系统资源的控制优点:减少内存的开支 减少系统的性能开销 避免资源过度的占用 可以在系统设置全局的访问点缺点:无法创建子类,扩展困难,只能修改代码 对测试不利 单例模式与单一原则冲突场景:要求生成唯一序列的环境 在整体项目中需要...原创 2019-06-23 17:37:16 · 97 阅读 · 0 评论 -
创建型模式~工厂模式
定义:又称虚拟构造函数模式或者多态性工厂模式,定义一个创建产品的工厂接口,将实际性创建工作推迟到子类中四角色 抽象工厂 具体工厂:创建产品对象 抽象产品 具体产品 优点:良好的封装性,代码结构清晰 优秀的可扩展性 屏蔽产品类 典型的解耦框架实例:农场系统package 工厂模式;public interface ...原创 2019-06-23 18:32:08 · 182 阅读 · 0 评论 -
创建型模式~建造者模式
定义:也叫做生成器模式,将一个复杂对象的构建与他的表示分离,使同样的构建过程可以创建不同的表示优点:封装性 建造者独立,易于扩展 便于控制细节风险场景:相桶方法,不同顺序产生不同结果 多个部件或者零件都可以装配到一个对象中,产生的效果不同 产品类非常复杂,调用顺序产生不同的结果 在对象创建中使用到系统的一些其他对象关注的是零件类型和装配工艺的顺序四角色...原创 2019-06-23 19:16:33 · 100 阅读 · 0 评论 -
行为型模式~观察者模式
定义:也称发布订阅模式,它是一种在项目中经常使用的模式定义对象间一种一对多的依赖关系,使得每个对象改变状态,则所有的依赖于他的对象都会收到通知并且自动更新角色:抽象主题角色:被观察者,定义增加,删除,通知方法 抽象观察者角色:为所有具体观察者提供一个接口,定义更新方法 具体主题角色:实现增,删,通知方法,存储对象。 具体观察者角色:实现更新方法优点:观察者和被观察...原创 2019-06-26 18:05:30 · 101 阅读 · 0 评论 -
行为型模式~备忘录模式
定义:又称为快照模式,Token模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以恢复角色:发起者:相当于游戏,记录当前内部状态,负责定义那些属于备份范围的状态,负责创建和恢复备忘的数据 备忘录:档内容,存储发起人的内部状态,在需要时提供需要的状态 负责人:增档,读档,删档,对备忘录角色进行管理场景:需要保存和恢复数据的相关状...原创 2019-06-26 19:21:10 · 100 阅读 · 0 评论 -
GoF(Gang of Four)23种经典的设计模式
设计模式概念:设计模式(Design Pattern)是一套被反复使用,多人知晓,经过分类编目的优秀代码设计经验的总结。使用设计模式是为了重用代码,使代码更容易理解并保证代码的可靠性。使用设计模式对于自己,对他人,对系统都是有利的。设计模式使代码编制更加工程化,是软件工程的基石。java设计模式贯彻的原理:面向接口编程,而不是面向实现。目标原则:降低耦合,增强灵活性。设计模...原创 2019-06-17 10:44:38 · 1356 阅读 · 0 评论