随笔分类 - 设计模式
摘要:使用环境: 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时。通常考虑用模板方法模式处理。 尤其是遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的,但是有些步骤的实现可能不同。可以考虑用模板方法模式。 解释: 定义一个操作中的算法的骨
阅读全文
摘要:解释: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新对象。 其实就是从一个对象再创建另外一个可定制的对象,且不需知道任何创建的细节。 优点: 防止多次实例化同样的东西,并设置同样的属性。类似克隆。 对性能提高较大。一般在初始化信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的
阅读全文
摘要:定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了其子类。 优点: 工厂方法模式是对简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法保持了简单工厂模式的优点,而且客服了简单工厂违背开放-封闭原则的缺点。 缺点: 每加一个产品,就需要加一个产品工厂
阅读全文
摘要:介绍 :why、meaning 代码分析 适用性 深入分析 应用分类: 动态代理: 优势介绍: 应用1: 解释: 为其他对象提供一种代理以控制对这个对象的访问。 使用场合: 1.远程代理,为一个对象在不同的地址空间提供局部代表。可以隐藏一个对象存在于不同地址空间的事实。 2.虚拟代理,根据需要创建开
阅读全文
摘要:定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。 特点 建造者模式要求建造过程必须是稳定的。装饰模式的建造过程则是不稳定的。 讲究组合方案、先后顺序。即,将所需的功能按正确的谁许串联起来进行控制。 装饰顺序很重要(数据加密、数据过滤)。 价值 为已有功能动态地添
阅读全文
摘要:依赖倒转原则 解释 抽象不应该依赖细节,细节应该依赖于抽象。 即,针对接口编程,不要对实现编程。 实现 高层模块不应该依赖低层模块。两个都应该依赖抽象。 抽象不应该依赖细节。细节应该依赖抽象。 价值 依赖倒转是面向对象设计的标志。 如果编写程序时考虑的都是如何针对抽象编程而不是针对细节编程。即,程序
阅读全文
摘要:解释 软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。 特征 对于扩展是开放的。(实现方式) 对于更改是封闭的。(目的) 针对问题 怎样的设计才能面对需求的改变却可以保持相对稳定,从而使系统可以在第一个版本以后不断推出新版本呢? 需求是一定会变化的,如何在面对需求的变化是,设计的软件可以
阅读全文
摘要:解释 就一个类而言,应该仅有一个引起它变化的原因。 针对问题 类的功能太多,导致任何需求变化,都需要更改类,维护麻烦,难以复用,缺乏灵活性。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会
阅读全文
摘要:定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。 适用于:算法时常变动。例如,商场打折、返利、积分兑换规则。 最重要:算法随时可以互相替换,这是变化点,因此需要封装变化点。 使用: 改造后,与工厂模式结合: 总结: 策略模式是一种定义一系列算法的方
阅读全文