设计模式
文章平均质量分 62
Mr.Gzj
这个作者很懒,什么都没留下…
展开
-
备忘录模式
定义备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。角色结构图:备忘录模式的主要角色如下。发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录(...原创 2020-07-10 14:49:59 · 456 阅读 · 0 评论 -
外观模式
随着一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标。定义外观(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个...原创 2020-07-10 14:49:53 · 210 阅读 · 0 评论 -
观察者模式
定义观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。...原创 2020-07-10 14:49:45 · 248 阅读 · 0 评论 -
组合模式
定义组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。结构与实现组合模式包含以下角色。抽象构件(Component)角色:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。在透明式的组合模式中抽象构件还声明访问和管理子类的接口;在安全式...原创 2020-07-10 14:49:39 · 448 阅读 · 0 评论 -
迭代器模式
定义迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式。在学习Java集合的时候,我们要访问容器内的对象,就要知道容器的结构,如ArrayList要用get来获取对象,而set只能用迭代器或for each循环。所以,当容器类型很多时,使用是不方便的,我们需要一种接口,这个接口可以遍历容器的对象,而...原创 2020-07-10 14:49:32 · 1805 阅读 · 0 评论 -
适配器模式
定义适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。模式角色适配器模式(Adapter)包含以下主要角色。目标(Target)接口:当前系统业务所期待的接口,...原创 2020-07-10 14:49:24 · 169 阅读 · 0 评论 -
策略模式
定义Define a family of algorithms,encapsulate each one,and make them interchangeable.定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。结构UML图如下Context是上下文,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用。Strategy是策略类,用于定...原创 2020-03-02 23:45:37 · 236 阅读 · 0 评论 -
责任链模式
定义责任链模式:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。责任链模式(Chain of Responsibility) 是行为型设计模式之一,它是一条链,链上每个节点都可以处理不同的内容,自己处理不了的交给下一个节点,直到最后一个节点。这样的话,请求者不必直到这条链上谁可以处理,只要把请求往...原创 2020-02-27 21:22:47 · 339 阅读 · 0 评论 -
命令模式
定义命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。在软件系统中,方法的请求者与方法的实现者总是存在着紧密的耦合关系,这不利于扩展和维护。因此“如何将方法的请求者与方法的实现者解耦?”变得很重要,命令模式能很好地解决这个问题。...原创 2020-02-26 15:49:14 · 777 阅读 · 0 评论 -
中介者模式
在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应...原创 2020-02-25 18:21:21 · 239 阅读 · 2 评论 -
原型模式
原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式可能是除了单例模式与迭代器模式之外23种设计模式中最简单的设计模式了。原型模式的核心就是一个clone方法,Java提供了一个Cloneable接口表示这个对象是可拷贝的,然后重写Object类中的clone方法。Java中原型模式的通用代码:public class ProtoType implements...原创 2020-02-24 22:10:34 · 206 阅读 · 0 评论 -
代理模式
代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。静态代理静态代理是指预先确定了代理与被代理者的关系,在程序员运行之前,代理类.class文件就已经被创建了。我们玩游戏经常遇见代打的情况,就用游戏的代打举例:首先定义一个玩游戏的接口package factory.proxy.staticproxy;p...原创 2020-02-20 22:39:04 · 174 阅读 · 0 评论 -
建造者模式
1、 概述将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。2、使用场景当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。3、如何实现建造者模式有两个版本,一个较为简单,也是最常用的,先看看这个版本。我们用用户信息来描述建造者模式,其中,id,name,password是必须的字段,addre...原创 2020-02-20 15:07:17 · 184 阅读 · 0 评论 -
模板方法模式
模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。模板方法模式用了类的继承机制,是一种应用广泛的模式,我们在平常项目中都会使用,只是没有想到是这个名字而已。模板方法模式由抽象类与具体模板构成,抽象类也称为抽象模板,其中的方法有:1.模板方...原创 2020-02-19 17:11:22 · 568 阅读 · 0 评论 -
工厂模式
工厂模式:工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式分为简单工厂模式、工厂方法模式、抽象工厂模式。1、简单工厂模式简单工厂模式将对象的创建与对象使用分割开来,对不同类对象的创...原创 2020-02-18 18:31:05 · 261 阅读 · 0 评论 -
设计模式六大原则
文章目录单一职责原则里氏替换原则依赖倒置原则接口隔离原则单一职责原则定义:不要存在多余一个导致类变更的原因,即一个类(大到模块,小到方法)只负责一个职责。若一个类负责多个职责,则这些职责可能会耦合在一起,当发生修改时,可能会影响到其他的职责。优点:类的复杂度降低提高程序可读性可维护性高,风险低。如果接口的单一职责好,一个接口修改只对应相应的实现类有影响。对其他的接口无影响,这对...原创 2020-02-16 20:56:17 · 377 阅读 · 0 评论 -
单例模式
单例模式,顾名思义,就是整个程序中只有一个实例对象,确保某个类中只有一个实例,而且自行实例化并为整个系统提供这个实例。那什么时候能用到单例模式呢?对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。单例模式的特点有三个:一是某个类只能有一个实例;二...原创 2020-02-16 20:56:09 · 237 阅读 · 0 评论 -
装饰器模式
在复习Java基础的IO时,提到了装饰器模式,虽然设计模式课上学过,但现在忘了,学习一下。装饰器模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。在增加功能时,通常都是尽量不动原有代码,这时我们的装饰器模式就可以很好的体现它的重要性。举个例子现在需要一个汉堡,主体是鸡腿堡,可以选择添加生菜、酱、辣椒等等许多其他的...原创 2020-02-06 16:29:51 · 281 阅读 · 0 评论