分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法使用注意:1> 只能增加方法,不能添加成员变量2> 分类方法实现中可以访问原来类中声明的成员变量3> 方法调用时,优先去分类中找(最后参与编译的分类优先),然后去原来类中找,最后去父类中找4> 分类可以重新实现原来类中的方法,但是会覆盖掉原...
分类:
其他好文 时间:
2014-11-05 14:33:17
阅读次数:
101
装饰模式,是在不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。是为已有功能动态加入很多其它功能的一种方式。当系统须要新功能的时候,把每一个要装饰的功能放在单独的类中,并让这个类包装它所装饰的对象,因此,当须要执行特殊行为时,客户...
分类:
其他好文 时间:
2014-11-04 16:46:54
阅读次数:
201
类定义下标操作符时,一般需要定义两个版本:1. 作为类的非const成员函数,返回引用;2. 作为类的const成员函数,返回const引用。首先,什么是类的const成员函数,也就是不改变对象的成员函数。表示方法就是在类的成员函数的声明和定义后面加上const。类的有些对象可能可以改变,有的不能改...
分类:
其他好文 时间:
2014-11-02 20:58:05
阅读次数:
187
类的成员函数后面加const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加const,而对于改变数据成员的成员函数不能加const。所以const关键字对成员函数的行为作了更加明确的限定:有cons...
分类:
编程语言 时间:
2014-11-02 20:46:34
阅读次数:
190
模板方法模式
定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
举例:学生甲和学生乙抄写的试卷非常类似,除了答案不同之外,其余的题目完全相同。如果老师要更改题目,意味着两个人的试卷都需要更改,这样很容易出错。如何做才能使错误降低到最少,则需要模板方法模式。
试卷代码如下:
namespace _10._3_...
分类:
其他好文 时间:
2014-10-31 22:10:57
阅读次数:
133
前言:【模式总览】——————————by xingoo 模式意图 在不改变原来类的情况下,进行扩展。 动态的给对象增加一个业务功能,就功能来说,比生成子类更方便。 应用场景 1 在不生成子类的情况下,为对象动态的添加某些操作。 2 处理一些可以撤销的职责。 3 当不能使用生成子类...
分类:
其他好文 时间:
2014-10-30 20:45:48
阅读次数:
192
一、今天突然想玩玩装饰者模式。这个模式行为是,给对象加一个新方法,在不改变对象原因有方法的基础上。网上找到的示例代码如下:function ABicycle(){ }ABicycle.prototype = { wash : function(){ }, ride : function(...
分类:
其他好文 时间:
2014-10-30 20:33:53
阅读次数:
263
题目大意:给你一个只包含大小写字母的字符串,现在Pirates要从键盘上输出它,按CapsLk可开
启关闭大小写指示灯。按Shift可转换将输入字母的大小写而不改变CapsLk的开关状态。Pirates有
一个坏习惯,如果输入的时候CapsLk是开着的,那么输入结束后必须把它关闭。问,输入一个字符
串,最小的按键数目是多少
思路:用两个数组dpa和dpb分别来表示CapsLk开启状态和关闭状态的最小操作数。
如果将要输入的字母是小写字母:
dpa[i+1] = min(dpa[i]+1,dpb[i]+2);...
分类:
其他好文 时间:
2014-10-29 14:50:10
阅读次数:
206
学习这个模式比前几个要难点了,搞了半天才弄懂。好吧,也许是我脑子慢
装饰者模式:装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
《《大话设计模式》》一书中以“小菜”去约会需要打扮为例子来展开学习装饰模式的,对于该模式,本人的理解是:就是对一个已有的算法进行二次加工,但又不改变原来的代码...
分类:
其他好文 时间:
2014-10-27 14:22:49
阅读次数:
183
当你必须要将字符串当做代码来执行,很多人第一印象是想到使用eval,但实际上,使用newFunction会更安全。为什么安全?看个例子。<script>
vara=1;
eval("vara=2;");//改变了当前域的变量a
alert(a);
newFunction("vara=3;")();//不改变当前作用域的变量
alert(a);
<..
分类:
编程语言 时间:
2014-10-23 20:58:33
阅读次数:
207