
设计模式
文章平均质量分 60
风流 少年
我走的很慢,但从不后退!Not designed!
展开
-
结构型模式-装饰者模式
在不改变现有对象结构的情况下,动态的给改对象增加一些职责(即增加其额外功能)的模式。原创 2022-07-22 22:11:43 · 135 阅读 · 0 评论 -
行为型模式-解释器模式(Interpreter)
【代码】行为型模式-解释器模式。原创 2022-08-28 17:47:34 · 80 阅读 · 0 评论 -
行为型设计模式-备忘录模式
备忘录模式又被称为快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。备忘录模式提供了一种状态恢复机制,使得用户可以方便的回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如Word、IDEA等软件在编辑时按Ctrl + Z 组合键时能撤销当前操作,使之恢复到之前的状态,还有浏览器中的后退键、数据库事务管理中的回滚操作,等都属于这类。...原创 2022-08-28 12:16:33 · 69 阅读 · 0 评论 -
行为型模式-访问者模式
给宠物喂食:宠物有狗、猫等,要给宠物喂食,可以是主人喂,也可以是其它人喂。原创 2022-08-21 12:39:37 · 66 阅读 · 0 评论 -
行为型设计模式-观察者模式
观察者模式又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知素有的观察者对象,使他们能够自动更新自己。...原创 2022-08-07 18:22:28 · 110 阅读 · 0 评论 -
行为型模式-中介模式
中介模式又叫调停模式,顶一个一个中介模式来封装一些列对象之间的交互,使原有对象之间的耦合松散,且可以独立的改变他们之间的交互。原创 2022-08-14 09:10:18 · 149 阅读 · 0 评论 -
行为型设计模式-状态模式
电梯功能,电梯状态分为:开门、关门、运行、停止4个状态,不同的状态下支持的操作是不同的。Lift类中的每个方法都会出现大量的switch或者 if else,这看上去代码不够优雅。对有状态的对象,把复杂的判断逻辑提取到不同的状态对象中,运行状态对象在其内部状态发生改变时改变其行为。状态模式就是把原来的case或者if else if 分支都抽象成一个对象。然后引入一个上下文作为代理,客户端的操作都要使用上下文来操作。优缺点优点:缺点:...原创 2022-08-06 22:00:59 · 127 阅读 · 0 评论 -
行为型模式-责任链模式
又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有的请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。...原创 2022-08-03 21:49:49 · 128 阅读 · 0 评论 -
策略设计模式(Strategy Pattern)
在讲策略设计模式之前,我们先写一个非常简单的计算器功能,我们将以最简单的计算器功能实现来逐渐引出策略设计模式。1. 最简单的计算器实现(示例1)public class Main { public static void main(String[] args) { // 计算类型:1:加法 2:减法 3:乘法 4:除法 // 计算类型和计算的值都是正...原创 2019-08-17 12:08:18 · 1964 阅读 · 2 评论 -
行为型模式-命令模式
将一个请求封装为一个对象,使得发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。当对象A中的方法需要调用对象B中的方法时我们可以直接在A方法中创建一个B对象,然后通过B对象来直接调用。方法调用我们一般都是这么写,但是这么写会使得A要强依赖于B,名利模式就是为了解耦A与B。...原创 2022-07-31 19:37:32 · 73 阅读 · 0 评论 -
行为型模式-策略模式
只是将原本的ifelse分支的代码进一步向上抽象到类中,使得整体ifelse代码简洁了而已,仍然去不掉ifelse,想去掉还要靠其它方式。易于扩展增加一个新的实现只需要添加一个具体的策略类即可,基本上不需要改变原有的代码,符合开闭原则。(增加新的实现类对原程序本来影响就小,这就是多态的特性)策略类之间可以自由切换由于策略类都实现了同一个接口,所以他们之间可以自由切换。(本来就是实现类实现接口,多态本来都可以自由切换,这也不只是策略特有的)。针对不同的节日退出不同的促销活动。...原创 2022-07-31 10:51:40 · 107 阅读 · 0 评论 -
行为型模式-模板方法模式
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或者聚合在对象间分配行为。由于组合关系或者聚合关系比继承关系耦合度第,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。...原创 2022-07-30 22:08:34 · 179 阅读 · 0 评论 -
设计模式-代理模式
代理设计模式:当访问对象不适合或者不能直接引用目标对象,此时需要通过一个中间商来作为中介来完成。如买房找中介,相亲找媒婆,买火车票找代售点。代理提供了与被代理相同的接口,其内部含有对被代理的引用,可以访问、控制或者扩展真实主题的功能。静态代理:在编译期生成动态代理:在运行时动态生成。JDK代理和CGLib代理。........................原创 2022-07-04 08:47:06 · 137 阅读 · 0 评论 -
设计模式-结构型模式-享元设计模式
运用共享技术来有效的支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。原创 2022-07-30 17:44:01 · 187 阅读 · 0 评论 -
结构型模式-外观(Facade)模式
又名门面模式,是一种通过多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对我有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。...原创 2022-07-23 17:19:21 · 208 阅读 · 0 评论 -
结构型设计模式-组合模式
又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分还是整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。...原创 2022-07-24 16:28:08 · 157 阅读 · 0 评论 -
结构型模式-桥接模式
将抽象与实现分离,使他们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变纬度的耦合度。原创 2022-07-23 11:37:40 · 97 阅读 · 0 评论 -
结构型模式-适配器模式
将一个类的接口转换成客户希望的另外一个接口,使得原来由于接口不兼容而不能一起工作的那些类能一起工作。原创 2022-07-20 09:12:13 · 158 阅读 · 0 评论 -
创建型设计模式-建造者(Builder)模式
在了解建造者模式之前需要先了解一下重叠构造器模式和JavaBeans模式,构建者模式是为了优化前两种模式的弊端而产生的。一:重叠构造器(telescoping constructor)模式假如一个类中有很多字段,其中只有少数几个字段是必选的(required),其余大部分字段都是可选的(optional),那么该如何创建对象呢?我们创建一个"营养成分表"类,营养成分在每个食物的包装盒上都有明......原创 2019-08-09 18:09:29 · 1414 阅读 · 1 评论 -
创建型设计模式-原型模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。抽象原型类:规定了具体原型对象必须实现的clone()方法。JDK已经提供了java.lang.Cloneable抽象原型类。具体原型:实现抽象原型类的clone()方法,它是被复制的对象。访问类:使用具体原型类的clone()方法来复制新的对象。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,扔指向原有属性锁指向的对象的内存地址。如JDK中的Object提供的clone()方法。深克隆:创建一个新原创 2022-06-26 17:07:41 · 212 阅读 · 0 评论 -
创建型-配置工厂
实际工作中可能会遇到“配置工厂”这种做法,这中做法并不属于设计模式,大概实现思路将要创建的对象配置到properties文件中,然后读取这个配置文件,使用反射创建对象存储在一个静态全局变量中,然后当客户端获取的时候从全局对象中取即可。...原创 2022-06-23 21:58:24 · 106 阅读 · 0 评论 -
创建型设计模式(二)抽象工厂模式
工厂方法模式是一个具体工厂只生产一类产品。现在咖啡店升级了不止买咖啡了也开始卖甜点了,咖啡和甜点是两种不同的产品,如果我们按照工厂方法模式该怎么做呢?咖啡店新增售卖甜品功能,首先无论使用什么模式Dessert、Trimisu、MatchMousse 三个实体肯定是少不了的,因为增加两个具体的甜品所以也要相应的增加两天具体的甜品工厂MatchMousseDessertFactory、TrimisuDessertFactory,响应的CoffeeStore也要增加orderDessert()方法。客户原创 2022-06-21 22:34:11 · 184 阅读 · 0 评论 -
创建型设计模式-工厂方法模式
工厂方法设计模式原创 2022-06-19 19:23:25 · 127 阅读 · 0 评论