随笔分类 - java 设计模式
摘要:1、定义 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新操作。 2、类型:行为类模式 3、类图 主要角色: 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的; 访问者:实现抽象访问
阅读全文
摘要:1、引入 在计算机软硬件中,有一种操作,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相同来决定是否接收;异常处理中,处理程序根据异常的类型决定自己是否处理该异常;还有struts2的拦截器等等,如果使用职责链模式就可以解决了。 2、定义 为了避免请求发送者与多个请求处理者耦合在一起,
阅读全文
摘要:1、策略模式(Strategy):定义了一组算法,将每个算法都封装其类,并且使他们之间可以互换。 2、UML结构图如下: 其中,Context是上下文,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用;Strategy是策略类,用于定义所有支持算法的公共接口;Con
阅读全文
摘要:1、定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。主要解决的是当控制一个对象转换的条件表达式过于复杂时的状态,即把状态的判断逻辑转移到表示不同状态的一系列类当中。 2、UML类图 其中,Context类与环境角色,用于维护一个ConcreteState子类的实例,这个
阅读全文
摘要:1、引入 浏览器回退:浏览器一般有浏览记录,当我们在一个网页上点击几次链接之后,可在左上角点击左箭头回退到上一次的页面,然后也可以点击右箭头重新回到当前页面; 数据库备份与还原:一般的数据库都支持备份与还原操作,备份即将当钱已有的数据或者记录保留,还原即将已经保留的数据恢复到对应的表中; 编辑器撤销
阅读全文
摘要:1、定义 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变他们之间的交互,中介者模式又叫调停模式,是迪米特法则的典型应用。 2、优缺点分析 优点: 类之间各司其职,符合迪米特法则; 降低了对象之间的耦合性,使得对象易于独立地被复用; 将对象间的一对多关联转变为一
阅读全文
摘要:1、定义 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它对象都得到通知并被自动更新。这种模式有时又被称作发布-订阅模式、模型-视图模式,是一种对象行为型模式。 2、优缺点 优点 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系,符合依赖倒转原则; 目标与观察者之间
阅读全文
摘要:1、定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。是一种对象行为型模式。 2、优缺点 优点 封装性好,为遍历不同的聚合结构提供一个统一的接口; 访问一个聚合对象的内容而无须暴露它的内部表示; 遍历任务交由迭代器完成,这简化聚合类; 支持以不同方式遍历一个聚合,甚至可
阅读全文
摘要:1、定义 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 2、优缺点 优点: 通过引入中间件(抽象接口)降低系统的耦合度; 扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响
阅读全文
摘要:1、定义 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 2、优缺点分析 优点: 它在父类中提取了公共的部分代码,便于代码复用; 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现
阅读全文
摘要:1、定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗来讲就是中介。 2、UML类图 代理模式中的角色分析: 抽象对象角色(AbstractObject):声明了目标对象和代理对象的共同接口,这样依赖在任何可以使用目标对象的地方都可以使用代理对象; 目标对象角色(Rea
阅读全文
摘要:1、用途 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。属于结构型模式,提供了一种减少对象数量从而改善应用所需的对象结构的方式。 2、意图 运营共享计算有效地支持大量细粒度的对象。 3、主要解决 在存在大量对象时,有可能会造成内存溢出,我们把其他
阅读全文
摘要:1、定义 外观模式(Facade)模式又叫门面模式,是一种通过为多个复杂的子系统提供应该一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有应该统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 在日常的编码工作中。我们使用外观模式的例
阅读全文
摘要:1、简介 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象。用来表示部分以及整体层次。这周类型的设计模式属于结构型模式,创建了对象组的树形结构。 这种模式创建了一个包含自己对象组的类,提供了修改相同对象组的方式
阅读全文
摘要:1、意图 动态给一个对象添加一些额外的职责。比如增加功能,装饰模式相比生成子类更为灵活。该模式以对客户端透明的方式扩展对象的功能。 2、适用场景 (1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责; (2)当不能采用继承方式对系统进行扩展或者采用继承不利于系统的扩展和维护时,第一种
阅读全文
摘要:1、定义 桥接模式是将抽象部分与它的实现部分分离,使它们都对立地变化。它是一种对象结构模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 2、优劣分析 (1)好处分析 桥接模式类似于多继承方案,但是多继承方案违背了类的单一职责原则,复用性比较差,类的个数也非常多
阅读全文
摘要:1、定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类的可以一起工作。 2、角色分析 目标接口:客户所期待的接口,目标可以是具体的或者抽象的类,也可以是接口。 需要适配的类:需要适配的类或适配者类。 适配器:通过包装一个需要适配的对象,把原
阅读全文
摘要:1、简介 原型模式使用原型实例指定创建对象的种类,并且通过拷贝原型对象创建新的对象。提供了应该通过已存在对象进行新对象创建的接口clone。原型模式实际上就是从一个对象再创建另外一个可定制的对象,并且不需要知道创建的细节。在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建的细节,又
阅读全文
摘要:1、建造者模式也属于创建型模式,提供了一个创建对象的最佳方式。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。 用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(
阅读全文