● NVI: Non-Virtual Interface
NVI的优点:用一个不能被子类重定义的函数,做一些预处理、后处理。比如:互斥锁、日志、验证约束条件,等等。
● 函数指针
优先:对象实例和派生类对象,可使用各种实现,也可在运行时随意改变。
缺点:函数只能访问类内部的公有成员。这是一种隐患:可能以后需要访问私有成员,那么只有弱化类的封装。比如,把函数声明为友元;为私有成员提供访问函数。
● tr1::function比上面的函数指针更灵活、限制更少:
1> 返回值不一定是int,与其兼容即可
2> 可以是function对象
3> 可以是类的成员函数
● Strategy模式
优点:只要熟悉这个模式,就可以随时添加新算法。