DesignPattern】的更多相关文章

参考:http://www.runoob.com/design-pattern/design-pattern-tutorial.html…
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖着都会受到通知并且自动更新. 我们先看下类图: 首先我们自己创建Subject接口,定义了注册观察者,移除观察者和通知观察者三个函数. package headfirst.observer.weather; public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer…
装饰者模式动态地将责任附加到对象杭,若要拓展功能,装设置提供了比继承更有弹性的替代方案. 星巴兹有多种咖啡,它们具有不同的价格.在购买咖啡时,也可以要求在其中加入各种调料,例如豆浆.摩卡.奶泡等等.需要根据所加入的调料收取不同的费用. 这里运用”装饰者模式“,以饮料为主体,然后在运行时以调料来“装饰”饮料,比如说顾客想要摩卡和奶泡深焙咖啡,那么 哪一个深焙咖啡(DarkRoast)对象 以摩卡对象装饰它 以奶泡对象装饰它 调用cost()方法,并依赖委托(delegate)将调料的价格加上去.…
我们用Java中自带的观察者模式接口来重写前面的例子. 先看一下类图: 这里用到了一个setChanged函数,它用来标记状态已经改变的事实,好让notifyObservers()知道当它调用时就应该更新观察者.如果调用notifyObservers()之前没有先调用setChanged(),观察者就不会被通知到.setChanged()方法可以让你在更新观察者时,有更大的弹性,你可以适当地通知观察者. Observable内部是这样的结构: setChanged(){ changed = tr…
状态模式 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为.那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码.这样的设计显然违背了开闭原则,状态模式正是用来解决这样的问题的. 状态模式——允许一个对象在其内部状态改变时自动改变其行为,对象看起来就像是改变了它的类.具体的结构图如下所示: 示例代码 就以银行账户的状态来实现下状态者模式.银行账户根据余额可分为RedState.…
行为型模式 行为型模式是对在不同对象之间划分责任和算法的抽象化.行为模式不仅仅关于类和对象,还关于它们之间的相互作用.行为型模式又分为类的行为模式和对象的行为模式两种. 类的行为模式——使用继承关系在几个类之间分配行为. 对象的行为模式——使用对象聚合的方式来分配行为. 行为型模式包括11种模式:模板方法模式.命令模式.迭代器模式.观察者模式.中介者模式.状态模式.策略模式.责任链模式.访问者模式.解释器模式和备忘录模式. 模板方法模式:封装算法结构,定义算法骨架,支持算法子步骤变化. 命令模式…
上篇链接  https://www.cnblogs.com/qixinbo/p/9023764.html 继续介绍最后三种结构型模式 外观模式 外观模式,也称作 ”门面“模式,在系统中,客户端经常需要与多个子系统进行交互,这样导致客户端会随着子系统的变化而变化,此时可以使用外观模式把客户端与各个子系统解耦.外观模式指的是为子系统中的一组接口提供一个一致的门面,它提供了一个高层接口,这个接口使子系统更加容易使用.如电信的客户专员,你可以让客户专员来完成冲话费,修改套餐等业务,而不需要自己去与各个子…
结构型模式 结构型模式,顾名思义讨论的是类和对象的结构 ,主要用来处理类或对象的组合.它包括两种类型,一是类结构型模式,指的是采用继承机制来组合接口或实现:二是对象结构型模式,指的是通过组合对象的方式来实现新的功能.它包括适配器模式.桥接模式.装饰者模式.组合模式.外观模式.享元模式和代理模式. 适配器模式注重转换接口,将不吻合的接口适配对接 桥接模式注重分离接口与其实现,支持多维度变化 组合模式注重统一接口,将“一对多”的关系转化为“一对一”的关系 装饰者模式注重稳定接口,在此前提下为对象扩展…
创建型模式 创建型模式就是用来创建对象的模式,抽象了实例化的过程.所有的创建型模式都有两个共同点.第一,它们都将系统使用哪些具体类的信息封装起来:第二,它们隐藏了这些类的实例是如何被创建和组织的.创建型模式包括单例模式.工厂方法模式.抽象工厂模式.建造者模式和原型模式. 单例模式 单例模式指的是确保某一个类只有一个实例,并提供一个全局访问点.解决的是实体对象个数的问题,而其他的建造者模式都是解决new所带来的耦合关系问题.其实现要点有: 类只有一个实例.问:如何保证呢?答:通过私有构造函数来保证…
使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替原则.依赖倒置原则.接口隔离原则.合成复用原则和迪米特法则.下面就分别介绍了每种设计原则. 依赖倒置原则DIP 1.官方定义 依赖倒置原则,英文缩写DIP,全称Dependence Inversion Principle. 原始定义:High level modules should not depend upon low leve…