设计模式 对象性能模式 单件模式Singleton 对象性能模式面向对象很好地解决了”抽象”问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。 1.1 动机在软件系统中,经常有一些特殊的类,必须保证它们在系...
设计模式 对象性能模式 享元模式 享元模式Flyweight1.1 动机在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价 如何避免大量细粒度对象问题的同时,让外部客户程序仍然能够透明地使用面向...
设计模式 对象创建模式 构建器模式 构建器Builder1.1 动机在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临剧烈的变化,但是它们组合在一起的算法却相对稳定。 如何应对这...
设计模式 对象创建模式 抽象工厂模式 抽象工厂Abstract Factory1.1 动机在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作“;同时,由于需求的变化,往往存在更多系列对象的创建工作 1.2 讲解12345678class EmployeeDao...
设计模式 对象创建模式 工厂模式 对象创建模式通过”对象创建模式“绕开new,来避免对象创建new过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 1.1 动机在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的...
设计模式 对象创建模式 原型模式 原型模式Prototype1.1 动机在软件系统中,经常面临着”某些结构复杂的对象“的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有稳定一致的接口 如何应对这种变化?如何向”客户程序(使用这些对象的程序)”隔离...
设计模式 单一职责模式 装饰模式 单一职责模式在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任 1.装饰模式1.1动机为某些情况下我们可能会”过度地使用继承来扩展对象的功能“,由...
设计模式 单一职责模式 桥模式 1.Brige桥模式1.1 动机由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个维度的变化 如何应对这种多维度的变化?如何利用面向对象技术来使得类型可以轻松沿着两个乃至多个方向变化?而不引入额外的复杂度? 1.2 讲...
设计模式 组件协作模式 观察者模式 观察者模式 Observer1.1 动机在软件构建过程中,我们需要为某些对象建立一种”通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者模式)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变...
设计模式 组件协作模式 策略模式 策略模式Strategy1.1 动机在软件构建过程中,某些对象使用的算法多种多样,经常改变,如果将这些算法都编码到对象中,将使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担 如何在运行时根据需要透明地更改对象的算法?将算...