设计模式之代理模式
代理模式简介:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。比如,某对象需访问目标对象,但由于某种情况,不方便或不能直接访问目标对象,通过一个中介进行访问,这个中介就是代理对象。 代理模式结构 抽象接口类:可以是抽象类也可以是接口,代理类和实体类都需要显式实现它。 实体类:被委托的类,是具体业务的执行者。 代理类:负责对实体...
代理模式简介:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。比如,某对象需访问目标对象,但由于某种情况,不方便或不能直接访问目标对象,通过一个中介进行访问,这个中介就是代理对象。 代理模式结构 抽象接口类:可以是抽象类也可以是接口,代理类和实体类都需要显式实现它。 实体类:被委托的类,是具体业务的执行者。 代理类:负责对实体...
状态模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。 状态模式结构: 环境(Context):称为上下文类或环境类,它是拥有多种状态的对象。由于环境类的状...
组合模式:组合多个对象形成树形结构以表示具有“整体-部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,它是一种对象结构模式。 组合模式通过一种巧妙的设计方案,可以一致性地处理整个树形结构或树形结构的一部分,也可以一致性地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点),其实就是利用对象的多态性来实现的。 组合模式结构 ...
策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 策略模式主要用来解决当有多种相似算法的时,使用if…else产生的难以维护的问题。它主要由三部分组成:strategy接口、具体的strategy类以及用来改变和执行策略的context类。其中,Context接受客户的请求,随后把请求委托给某一个策略类。 使用策略模式计算奖金很多公司的年终奖是根据员工的工资...
单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。也可以这样认为,单例只是全局的一个别称。 透明的单例模式透明的单例模式:下面,我们将使用CreateDiv单例类,它的作用是负责在页面中创建唯一的div节点 123456789101112131415161718192021222324252627282930class CreateDiv { p...
适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。 应用场景港式插头转换器,港式的电器插头比大陆的电器插头体积要大一些。如果从香港买一个Mac book,我们会发现充电器无法插在家里的插座上,为此而改造家里的插座显然不方便,所以我们需要一个转换插头 具体代码实现: 12345678910111213141516...
模板方法模式:由两部分结构组成,第一部分是抽象父类,第二部分是具体实现的子类。在抽象父类中封装了子类的算法框架,子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类方法。 应用场景假如我们有一些平行的子类,各个子类之间有一些相同的行为,也有一些不同的行为,像这种情况就可以使用模板方法模式。在模板方法模式中,子类实现中的相同部分被上移到父类中,而将不同的部分留给子类自己实现 例子...
发布-订阅或观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。 介绍:在软件架构中,发布-订阅模式是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪...