本文整理汇总了C++中Context::DoAction方法的典型用法代码示例。如果您正苦于以下问题:C++ Context::DoAction方法的具体用法?C++ Context::DoAction怎么用?C++ Context::DoAction使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Context
的用法示例。
在下文中一共展示了Context::DoAction方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[])
{
Strategy *psA = new ConcreteStrategyA();
Strategy *psB = new ConcreteStrategyB();
Context pcA = Context(psA);
Context pcB = Context(psB);
pcA.DoAction();
pcB.DoAction();
delete psA;
delete psB;
return 0;
}
示例2: test_strategy
void test_strategy()
{
Strategy* stg = new ConcreteStrategyA;
Context* ctt = new Context(stg);
ctt->DoAction();
delete stg;
delete ctt;
}
示例3: ConcreteStrategyA
int
main(int argc, char* argv[])
{
Strategy* ps;
ps = new ConcreteStrategyA();
Context* pc = new Context(ps);
pc->DoAction();
if(NULL!=pc)
delete pc;
return 0;
}
示例4: main
int main(int argc, char *argv[])
{
/*
Strategy模式和Template模式实际是实现一个抽象接口的两种方式:继承和组合之间的区别。
要实现一个抽象接口,继承是一种方式:我们将抽象接口声明在基类中,将具体的实现放在具体子类中。
组合(委托)是另外一种方式:我们将接口的实现放在被组合对象中,将抽象接口放在组合类中。
这两种方式各有优缺点
*/
//策略A与B可替换
Strategy* pStr = new ConcreteStrategyA();
Context* pcon = new Context(pStr);
pcon->DoAction();
pStr = new ConcreteStrategyB();
pcon = new Context(pStr);
pcon->DoAction();
std::cin.get();
return 0;
}
示例5: StrategyTest
///Strategy 策略模式则通过组合(委托) 来达到和 Template 模式类似的效果,其代价就是空间和时间上的代价
///Strategy 模式和 Template 模式要解决的问题是相同(类似)的,都是为了给业务逻辑(算 法)具体实现和抽象接口之间的解耦。Strategy 模式将逻辑(算法)封装到一个类(Context) 里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口 的实现委托给组合对象实现。State 模式也有类似的功能
//////Bridge模式和Strategy模式相似就是因为他们都将任务委托给了另外一个接口的具体实现,他们之间的区别在于Bridge的目的是让底层实现和上层接口可以分别演化,从而提高移植性而Strategy的目的是将复杂的算法封装起来,从而便于替换不同的算法。
///以相对策略模式,桥接模式要表达的内容要更多,结构也更加复杂。桥接模式表达的主要意义其实是接口隔离的原则,即把本质上并不内聚的两种体系区别 开来,使得它们可以松散的组合,而策略在解耦上还仅仅是某一个算法的层次,没有到体系这一层次。从结构图中可以看到,策略的结构是包容在桥接结构中的,桥接中必然存在着策略模式
void StrategyTest() {
Strategy* ps = new ConcreteStrategyA();
Context* pc = new Context(ps);
pc->DoAction();
}