策略模式

出行旅游:我们可以有几个策略可以考虑:可以骑自行车,汽车,做火车,飞机。每个策略都可以得到相同的结果,但是它们使用了不同的资源。选择策略的依据是费用,时间,使用工具还有每种方式的方便程度 。
![](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2015/03/wpid-a043baafeae17dec458e0f1095af6d04_47093040-ee28-4190-aa79-dbb649da36e4.png)
代码描述:

1.  `class person;`
2.  `class travel_stategy`
3.  `{`
4.  `public:`
5.  `    virtual void travel()`
6.  `    {`
7.  `        cout <<"default_stategy" << endl;`
8.  `    }`
9.  `};`
10.  `class airplane_stategy:public travel_stategy`
11.  `{`
12.  `public:`
13.  `    virtual void travel()`
14.  `    {`
15.  `        cout <<"airplane_stategy" << endl;`
16.  `    }`
17.  `};`
18.  `class train_stategy:public travel_stategy`
19.  `{`
20.  `public:`
21.  `    virtual void travel()`
22.  `    {`
23.  `        cout <<"train_stategy" << endl;`
24.  `    }`
25.  `};`
26.  `class bus_stategy:public travel_stategy`
27.  `{`
28.  `public:`
29.  `    virtual void travel()`
30.  `    {`
31.  `        cout << "bus_stategy" << endl;`
32.  `    }`
33.  `};`
34.  `travel_stategy default_stategy;`
35.  `class person`
36.  `{`
37.  `public:`
38.  `    person(travel_stategy *de_pts = &default_stategy):pts(de_pts)`
39.  `    {`
40.  `    }`
41.  `    void get_stategy()`
42.  `    {`
43.  `        pts->travel();`
44.  `    }`
45.  `private:`
46.  `    travel_stategy* pts;`
47.  `};`
48.  `int main()`
49.  `{`
50.  `    person a;`
51.  `    a.get_stategy();`
52.  `    `
53.  `    travel_stategy* bs = new bus_stategy();`
54.  `    person* b = new person(bs);`
55.  `    b->get_stategy();`
56.  `    system("pause");`
57.  `    return 0;    `
58.  `}`
[来自为知笔记(Wiz)](http://www.wiz.cn/i/c09d0bb5 "来自为知笔记(Wiz)")
坚持原创技术分享,您的支持将鼓励我继续创作!