设计模式篇
文章平均质量分 72
Iobliviate
这个作者很懒,什么都没留下…
展开
-
设计模式之中介者模式
中介者模式定义定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型模式,其主要优点如下:1、降低了对象之间的耦合性,使得对象易于独立地被复用2、将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展其主要缺点是:当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护模式结构和代码示例1、抽象中介者(Mediator)角色原创 2021-10-22 17:53:24 · 620 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离。访问者(Visitor)模式是一种对象行为型模式,其主要优点如下:1、扩展型好。能够在不修改对象结构中元素的情况下,为对象结构中的元素添加新的功能2、复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度3、灵活性好。访问者模式将数据结构与作用于结构上的操作解耦使得原创 2021-10-22 17:12:01 · 508 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式定义:在不被破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式备忘录模式是一种对象行为型模式,其主要优点如下:1、提供了一种可以恢复状态的机制,当用户需要时能够比较方便地将数据恢复到某个历史的状态。2、实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。3、简化了发起人类,发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单原创 2021-10-22 16:00:40 · 535 阅读 · 0 评论 -
设计模式之状态模式
状态模式定义在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的context对象。简单理解,一个拥有状态的context对象,在不同的状态下,其行为会发生改变意图允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类主要解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用代码中包含大量与对象状态有关的条件语句如何解决将各种具体的状态类抽象出来关键代码通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或原创 2021-10-22 15:26:16 · 94 阅读 · 0 评论 -
设计模式之命令模式
命令模式定义将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存,传递,调用,增加和管理。意图将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录,撤销或重做,事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。何时使用在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的原创 2021-10-22 14:40:04 · 117 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式定义如果有多个对象有机会处理请求,责任链可使请求的发送者和接受者解耦,请求沿着责任链传递,直到有一个对象处理了它为止。主要解决职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。何时使用在处理消息的时候以过滤很多道如何解决拦截的类都实现统一接口关键代码Handler里面聚合它自己,在HandlerRequest里判断是否合适,如果没达到条件则向下传递,向谁传递之前set进去...原创 2021-10-21 15:20:47 · 69 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式定义提供一种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部表示。简单来说,不同种类的对象可能需要不同的遍历方式,我们对每一种类型的对象配一个迭代器,最后多个迭代器合成一个主要解决不同的方式来遍历整个整合对象何时使用遍历一个聚合对象如何解决把在元素之间游走的责任交给迭代器,而不是聚合对象关键代码定义接口:hasNext,next应有实例JAVA中的iterator优点1、它支持以不同的方式遍历一个聚合对象2、迭代器简化了聚合类3、在同一个聚合上可以有多原创 2021-10-20 17:13:50 · 188 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。如何解决使用面向对象技术,可以将这种依赖关系弱化。关键代码在抽象类里有一个ArrayList存放观察者们。优点1、观察者和被观察者是抽象耦合的。2、建立一套触发机制。缺点1、如原创 2021-10-20 15:36:19 · 71 阅读 · 0 评论 -
设计模式之组合模式
组合模式介绍类图原创 2021-10-19 16:33:46 · 73 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式概述将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。解决的问题即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。模式中的角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee):需要适配的类或者适配者类。适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。实现方式类的适配器模式(采用继承原创 2021-10-18 13:45:40 · 124 阅读 · 0 评论 -
设计模式之原型模式
原型模式定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型创建类模式类图原型模式主要用于对象的复制,它的核心就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:1、实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedExcepti原创 2021-10-18 13:39:24 · 138 阅读 · 0 评论 -
设计模式之工厂设计模式
工厂设计模式定义工厂模式是java中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,工厂模式主要是为了创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到一高灵活性的目的工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)工厂方法模式(也叫多形性工厂)抽象工厂模式(也叫工具箱)简单工厂模式实质是由一个工厂类根据传入的参数,动态决定应该去创建哪一个产品类(这些产品继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的原创 2021-10-18 13:24:36 · 90 阅读 · 0 评论 -
设计模式之单例模式
单例模式特点1、单例类只能有一个实例2、单例类必须自己创建自己的唯一的实例3、单例类必须给所有其他对象提供这一实例懒汉式单例//懒汉式单例类,在第一次调用的时候实例化自己public class Singleton { private Singleton() {} private static Singleton single = null; //静态工厂方法 public static Singleton getInstance() { if原创 2021-10-18 10:09:54 · 169 阅读 · 0 评论