今天,我们一起来探讨最后一个、最复杂的设计模式 访问者模式;它表示一个作用于某个对象结构中的各个元素的操作。它使你可以在不改变个元素的类前提下,定义作用于这些元素的新操作。这个地方要注意:1.需要有个对象结构类用于存储循环遍历的方法的方式;2.访问者模式是对元素的操作;3.可以任意添加对这些元素的新操作。确实有点复杂,我们先看看其结构图:...
分类:
其他好文 时间:
2015-02-26 15:02:23
阅读次数:
142
适配器模式:Adapter
改造现有的接口从而适应新接口的要求。
适配器中需要有要适配的对象的引用。
适配器中包装多个被适配者是外观模式。
适配器模式的意图是改变接口符合客户的期望,外观模式的意图是提供子系统的一个简化接口。
这里容易联想到外观模式。外观模式提供了一个统一的接口,用来访问子系统中的一群接口。
比较以下三者的区别
装饰器 不改变接口但...
分类:
其他好文 时间:
2015-02-25 17:08:09
阅读次数:
126
描述:
在一个方法中定义一个算法的骨架。将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。
钩子:定义一个空的方法或者默认的方法,提供用户子类根据情况去覆盖实现自身的判断和功能。 通过钩子可以影响抽象类中的算法流程。在算法的某个地方是可选的就设置钩子。让子类有能力为其抽象类做一些决定。
类图:
以下程序模拟制作不同饮料的过程...
分类:
其他好文 时间:
2015-02-25 17:07:09
阅读次数:
104
需求:如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式>继承>分类(Category)(一)了解Catagory1.Catagory,可以动态的为已经存在的类添加新的行为(方法),功能扩展,使用Category对类进行扩展时,不需要创建子类.Category使用简单的方式,实现了类的相关...
分类:
移动开发 时间:
2015-02-24 16:19:51
阅读次数:
181
<?php
/**
*3.6模版方法模式
* 定义:
* 定义一个操作中的算法的骨架,而将一些步骤延
* 迟到子类中。模版方法是的子类可以不改变一个
* 算法的结构即可重定义该算法的某些特定步骤。
* 角色:
* 1.抽象模版方法类
* 职责:定义并实现了一个模版方法。这个..
分类:
其他好文 时间:
2015-02-17 23:40:18
阅读次数:
162
模板方法设计模式(Templete Method)定义一个操作中的算法骨架,而将一些可变部分的实现延迟到子类中。模板方法设计模式使得子类可以不改变一个算法的结构即可重新定义该算法某些特定的步骤。 1 import java.util.Random; 2 3 public class Abstrac....
分类:
编程语言 时间:
2015-02-16 23:21:01
阅读次数:
228
代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构、优化、扩展以及文档相关的事情通常需要消耗 80% 的工作量。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。改进算法,选择合适的数据结构一个良好的算法能够对性能起...
分类:
编程语言 时间:
2015-02-15 13:26:05
阅读次数:
236
在微软的WebCast上, 李建中老师有个设计模式的系列讲座, 其中在讲到模板方法(Template Method)曾说: 如果你只想学习一种设计模式就学习模板方法吧. 由此可见它使用的广泛性. 模板方法模式: 定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中, 模板方法使得子类可以不改变一个...
分类:
编程语言 时间:
2015-02-15 01:02:00
阅读次数:
237
一、简介 模板方法模式就是定义一个算法骨架,而将算法骨架中的一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。 模板方法特点如下:一次性实现一个算法的不变部分,并且将可变的行为留给子...
分类:
其他好文 时间:
2015-02-13 21:10:10
阅读次数:
211
1、> 、>>的用法以及区别>(左位移):右移n位实际上相当于被2的n次方整除:for(inti=1;i<=n;i++)a=a / 2 ;<<=:a<<=1等价于a=a<<1,就是将a按位左移后将值赋值给aa<<1只是将a按位左移,并不改变a的值