设计模式
Duktig丶
这个作者很懒,什么都没留下…
展开
-
实例理解JDK动态代理和Cglib动态代理及其区别
实例理解JDK动态代理和Cglib动态代理及其区别深入理解设计模式之代理模式代理商代理化妆品生产理解JDK动态代理代理商代理汽车制造理解Cglib动态代理原创 2020-07-06 15:47:24 · 5689 阅读 · 2 评论 -
三言两语总结GoF23种设计模式
学习编程开发,设计模式几乎是必学的,但是设计模式比较多,非常容易弄混,也不容易理解。所以将设计模式的精要总结下来,方便理解。什么设设计模式?理解七大设计原则理解类之间的关系三言两语总结23种设计模式原创 2020-06-12 10:34:40 · 490 阅读 · 1 评论 -
设计模式(二十四)——责任链模式(Chain of Responsibility Pattern)
责任链模式(Chain of Responsibility Pattern)背景在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子...原创 2020-04-06 11:29:53 · 247 阅读 · 0 评论 -
设计模式(二十三)——策略模式(Strategy Pattern)
策略模式(Strategy Pattern)背景在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入...原创 2020-04-04 22:42:27 · 175 阅读 · 0 评论 -
设计模式(二十二)——状态模式(State Pattern)
状态模式(State Pattern)背景在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。对这种有状态的对象...原创 2020-04-04 13:35:32 · 235 阅读 · 0 评论 -
设计模式(二十一)——解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern)基本介绍定义解释器(Interpreter)模式的定义:给分析对象定义一个语言(表达式),并定义该语言的文法表示,再设计一个解析器来解释语言中的句子(表达式)。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。这里提到的文法和句子的概念同编译原理中的描述相同,“文法”指语言的语法...原创 2020-04-03 17:32:44 · 182 阅读 · 0 评论 -
设计模式(二十)——备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern)基本介绍备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记...原创 2020-04-02 11:48:17 · 191 阅读 · 0 评论 -
设计模式(十九)——中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)基本介绍中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。核心如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为“同事对象”我们可以引入一 个中介者对象,使各个同...原创 2020-03-31 12:59:10 · 322 阅读 · 0 评论 -
设计模式(十八)——观察者模式(Observer Pattern)
观察者模式(Observer Pattern)基本介绍对象之间多对一依赖的一种设计方案,被依赖的对象为 Subject,依赖的对象为 Observer,Subject通知 Observer 变化。场景分析聊天室程序的创建。服务器创建好后,A,B,C三个客户端连上来公开聊天。A向服务器发送数据,服务器端聊天数据改变。我们希望将这些聊天数据分别发给其他在线的客户。也就是说,每个客户端需要更...原创 2020-03-30 11:20:46 · 287 阅读 · 0 评论 -
设计模式(十七)——迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)基本介绍迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。提供一种可以遍历聚合对象的方式。又称为:游标cursor模式聚合对象:存储数据迭代器:遍历数据什么时候使用?如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客...原创 2020-03-28 15:42:15 · 980 阅读 · 0 评论 -
设计模式(十六)——访问者模式(Visitor Pattern)
访问者模式(Visitor Pattern)基本介绍定义访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。工作原理对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。在被访问的...原创 2020-03-27 12:16:24 · 278 阅读 · 0 评论 -
设计模式(十五)——命令模式(Command Pattern)
命令模式(Command Pattern)基本介绍命令模式:将一一个请求封装为一一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式、事务transaction模式。命名模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在命名模式中,会将一个请求封装为一个对象,以便使用...原创 2020-03-26 20:30:21 · 254 阅读 · 0 评论 -
设计模式(十四)——模板方法模式(Template Method Pattern)
模板方法模式(Template Method Pattern)基本介绍模板方法模式是编程中经常用得到模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。核心处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用模板方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类中...原创 2020-03-25 20:15:29 · 244 阅读 · 0 评论 -
设计模式(十三)——代理模式(Proxy Pattern)
代理模式(Proxy Pattern)基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。是AOP(Aspect Oriented Programming面向切面编程)的核心实现机制!核心作用...原创 2020-03-24 12:27:14 · 685 阅读 · 2 评论 -
设计模式(十二)——享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)基本介绍核心以共享的方式高效地支持大量细粒度对象的重用。介绍享元模式(Flyweight Pattern) 也叫 蝇量模式。 常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。享元模式能够解决重复对象的内存浪费的问题,当...原创 2020-03-23 18:53:22 · 197 阅读 · 0 评论 -
设计模式(十一)——外观模式(Facade Pattern)
外观模式(Facade Pattern)基本介绍外观模式(Facade),也叫“过程模式,为子系统中的一组接口提供一个一致的入口,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(封装子系统的复杂性,便于客户端调用)。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。外观模式的UML类图角色分析...原创 2020-03-22 22:24:38 · 194 阅读 · 0 评论 -
设计模式(十)——组合模式(Composite Pattern)
组合模式(Composite Pattern)基本介绍组合模式(Composite Pattern),又叫部分整体模式,把部分和整体的关系用树形结构来表示,从而使客户端对单个对象和组合对象的访问具有一致性,可以使用统一的方式处理部分对象和整体对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。UML原理类图角色及职责分析抽象构件(Component)角色: 定义了叶...原创 2020-03-21 21:26:12 · 367 阅读 · 0 评论 -
设计模式(九)——装饰者模式(Decorator Pattern)
装饰者模式(Decorator Pattern)基本介绍动态的将新功能附加到对象上。装饰模式是一种用于代替继承的技术 ,无须通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。装饰者模式UML类图角色分析Component抽象构件角色:真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交...原创 2020-03-20 12:22:06 · 1210 阅读 · 0 评论 -
设计模式(八)——桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)基本介绍桥接模式(Bridge 模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种结构型设计模式。基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。...原创 2020-03-18 12:21:39 · 238 阅读 · 0 评论 -
设计模式(七)——适配器模式(Adapter Pattern)
适配器模式基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。分类类适配器模式对象适配器模式接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的...原创 2020-03-17 18:49:10 · 248 阅读 · 0 评论 -
设计模式(六)——建造者模式(Builder Pattern)
建造者模式基本介绍建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们, 用户不需要知道内部的具体构建细节。建造模式的本质分离了对象子组件的单独构造...原创 2020-03-16 13:05:36 · 468 阅读 · 0 评论 -
设计模式(五)——原型模式(Prototype Pattern)
原型模式基本介绍原型模式(Prototype 模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即 对象.clone()通过new产生一个对象需要非常...原创 2020-03-15 11:20:13 · 275 阅读 · 0 评论 -
设计模式(四)——工厂模式(Factory Pattern)
工厂模式意义工厂模式 实现了创建者和调用者的分离。将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性。核心本质实例化对象,用工厂方法代替new操作。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。用到的面向对象设计的基本原则OCP(开闭原则,Open-Closed Principle):一个软...原创 2020-03-14 16:51:29 · 302 阅读 · 1 评论 -
设计模式(三)——详解单例模式(Singleton Pattern)的8种写法
详解单例模式的8种写法单例模式简介单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法)。常见应用场景Windows的Task Manager(任务管理器)就是很典型的单例模式windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。项目...原创 2020-03-12 12:53:01 · 296 阅读 · 0 评论 -
设计模式(二)——UML类图
UML类图背景在学习设计模式或者进行软件系统设计分析的时候,经常会使用UML,所以总结一些UML的基本使用方法。UML基本介绍UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的...原创 2020-03-11 12:26:19 · 1468 阅读 · 0 评论 -
设计模式(一)——七大原则详解
设计模式(一)——七大原则设计模式简介定义设计模式是一套面向对象的代码设计经验总结,是在编程领域被反复使用、被多数人知晓、而且经过分类整理的代码设计方法。奠基人四人帮实质是一种思想(占绝大多数),也是一种技术是一种解决方案,开发者可快速完成某项工作指明开发方向,快速达成目标目的*编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方...原创 2020-03-10 12:27:50 · 517 阅读 · 0 评论