1.功能晚绑定时运行时完成。class Point{public: virtual double Area(){} ...}class Circle:public Point{public: double Area(){} //仍为虚函数,重定义时virtual可写也可不写}double C...
分类:
其他好文 时间:
2015-01-14 06:14:04
阅读次数:
131
模版方法是一个非常简单,使用频率比较高的设计模式。
意图:
定义一个操作中算法的骨架,而将将一些方法的实现延迟到子类中,TemplateMethod使得子类可以不改变算法的结构即可重定义算法的特定方法。
参与者:
AbstractClass,抽象类。定义抽象的操作,具体的子类将重新定义各自的实现算法。
ConcreteClass,具体的实现类。
回想一下,在之前的开发中用到过这种模式,...
分类:
其他好文 时间:
2015-01-11 12:23:42
阅读次数:
153
定义模板方法模式(Template Method)定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。因此,在模板方法模式的类结构图中...
分类:
编程语言 时间:
2015-01-06 11:21:15
阅读次数:
149
基于类的通用视图前面我们说过了django的通用视图,不知道django通用视图的去看我前面的随笔,谢谢django的通用视图帮我们省略了很多代码,但有时候django的通用视图并不能满足我们全部的需求,例如像重定义一些属性和方法的时候,或者我们想换种写法的时候,因此,django提供了基于类的通用...
分类:
其他好文 时间:
2015-01-03 21:04:22
阅读次数:
145
1.重写override:也叫做覆盖。子类重新定义父类中有相同名称和参数列表的虚函数。函数特征相同。重写需要注意:1) 被重写的函数不能是static的。必须是virtual的2) 重写函数必须有相同的类型,名称和参数列表3) 重写函数的访问修饰符可以不同。尽管virtual是private的,派生...
分类:
其他好文 时间:
2015-01-03 13:08:54
阅读次数:
117
模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
何时应用:
1、需要一次性实现算法的不变部分,并将可变的行为留给子类实现
2、子类的共同行为应该被提取出来放到公共类中,避免代码重复
3、需要控制子类的扩展
典型应用:
1、C++ STL
2、系统底层框架:
2.1、Andro...
分类:
其他好文 时间:
2014-12-30 23:38:43
阅读次数:
220
目前所见的,在普通的JavaScript应用中和绝大多数人一样使用的是全局的方式。大概是因为JavaScript所定义的变量或函数默认就是全局的。为了是代码不至于太凌乱,变量不至于稀里糊涂的就被人重定义或重新赋值,前段时间做了一个引入命名空间的形式的代码整改。eg: var a={ na...
分类:
编程语言 时间:
2014-12-29 15:17:16
阅读次数:
187
比如说我在头文件里定义了一个类
class PaintWidget:public QWidget
{
public:
PaintWidget(QWidget*parent=0)
}
然后在cpp中写
PaintWidget::PaintWidget(QWidget*parent):QWidget(parent)
意思是说,重定义父对象。
如何重定义呢?看parent参数。
当PaintW...
分类:
其他好文 时间:
2014-12-23 12:27:36
阅读次数:
177
一个mo子里刻出来的?NO,NO,NO应该是一个mu子里立刻出来的。今天看了模板方法模式,一起学习了。
一、什么是模板方法模式?
定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
请大家细细品味定义,模板方法模式,父类只考虑骨架,子类只考虑血肉。有一些不必父类做的事情要放到子类中去。
二、模板方法模式有哪些应用?
...
分类:
其他好文 时间:
2014-12-23 10:36:25
阅读次数:
153