设计模式
melody_wkx
这个作者很懒,什么都没留下…
展开
-
什么是设计模式
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。接口和抽象类的区别: 1、abstract class 在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但原创 2017-05-25 18:19:48 · 726 阅读 · 0 评论 -
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保持这个状态。这样以后就可以将该对象恢复到原先保存的状态.使用场景很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。uml角色说明:originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻的内部状态...原创 2019-09-17 21:44:33 · 125 阅读 · 1 评论 -
中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群、短信平台和房产中介。不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如...原创 2019-09-16 21:37:42 · 95 阅读 · 0 评论 -
迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统...原创 2019-09-16 15:23:54 · 84 阅读 · 0 评论 -
命令模式
将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作命令模式的几个角色:1. 抽象命令接口Command:定义命令的接口,声明执行的方法。2. 具体的命令对象ConcreteCommand:持有具体的接受者对象,完成具体的具体的命令。3. 接受者对象Receiver:接受者对象,真正执行命令的对象。4. 传递命令对象Invoker:持有命令对...原创 2019-09-16 10:46:19 · 124 阅读 · 0 评论 -
责任链模式
为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了优缺...原创 2019-09-12 15:58:06 · 205 阅读 · 0 评论 -
代理模式
为其他对象提供了一种代理以控制对这个对象的访问.代理对象在客户端和目标对象之间起到中介作用,属于结构性模式。目的保护对象增强目标对象Subject是顶层接口;RealSubject是真实对象(被代理对象)Proxy是的代理对象,代理对象持有被代理对象的引用,客户端调用代理对象的方法,同时也调用被代理对象的方法,但是会在代理对象前后增加一些处理逻辑.一般分为静态代理和动态代...原创 2019-09-10 22:07:21 · 89 阅读 · 0 评论 -
享元模式
又称为 轻量级模式,它是一种对象结构型模式面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式 正是为解决这一类问题而诞生的。享元模式 是对象池的一种实现。类似于线程池,线程池可以避免不停的创建和销毁多个对象,消耗性能。享元模式 也是为了减少内存的使用,避免出现大量重复的创建销毁对象...原创 2019-09-10 19:58:32 · 448 阅读 · 0 评论 -
装饰器模式2
抽象角色component,定义一组公共接口/** * 定义顶层喝奶茶的接口 * @author 10191192 * @date 2019/9/10 */public interface DrinkMilkTea { float getTotalPrice(); String useMaterial();}具体的构建角色,被装饰者类/** * 焦糖奶茶类,实...原创 2019-09-10 14:41:16 · 75 阅读 · 0 评论 -
门面模式
门面模式也叫外观(Facade)模式,外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用客户端不与系统耦合,外观类与系统耦合实现细节Shape:系统角色...原创 2019-08-02 19:08:57 · 126 阅读 · 0 评论 -
适配器模式
适配器模式作为两个不兼容的接口之间的桥梁。结构性模式,结合了两个独立接口的功能。有一个电器的插头是三脚的,而现有的插座是两孔的,要使插头插上插座,我们需要一个插头转换器,这个转换器即是适配器。适配器模式分为三类:类适配器、对象适配器、接口适配器(或又称作缺省适配器模式)把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作实现细节源(A...原创 2019-08-02 19:03:07 · 96 阅读 · 0 评论 -
装饰器模式
装饰器模式也叫包装器模式,降低系统的耦合度,可以动态的增加或者删除对象的职责,并使得需要装饰的具体构建类和具体装饰器类可以独立变化,以便增加新的具体构建类和具体的装饰器类链接动态的为一个对象增加新的功能装饰器模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀实现细节Component抽象构件角...原创 2019-08-02 18:51:16 · 103 阅读 · 0 评论 -
工厂方法模式
在玩“极品飞车”游戏时,游戏者可以选择从不同的品牌来选择赛车,那么这个品牌其实也就是工厂,每个工厂生产的赛车都不一样。UML图Factory Method(工厂模式):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。 应用场景:由于需求的变化,一个类的子类经常面临着剧烈的变化,但他却拥有比较稳定的接口。使用一种封装机制来“隔离这种原创 2017-05-26 19:24:49 · 652 阅读 · 0 评论 -
简单工厂模式
下班了,我们去食堂吃饭,食堂中有各色各样的菜色供大家选择,大家可以根据自己的口味选择不同的菜,而无论你选什么菜都是在这一个食堂被做出来的,这时候,“食堂”就是一个简单工厂。UML图从上图可以看出,工厂是具体的,Product是抽象的,里面的方法operation是virtual的,它的三个子类是具体的,子类中的operation覆盖父类的方法operation。 Factory能够根据客户的请求原创 2017-05-25 18:45:30 · 245 阅读 · 0 评论 -
观察者模式
定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听。当这个主题对象状态变化时,会通知所有观察者对象并作出相应处理逻辑。又被称为发布订阅模式。何时使用一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。使用场景:一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。一个...原创 2019-09-20 11:26:19 · 115 阅读 · 0 评论