-
Notifications
You must be signed in to change notification settings - Fork 0
/
dm14_装饰模式.cpp
86 lines (74 loc) · 1.09 KB
/
dm14_装饰模式.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
using namespace std;
class Car
{
public:
virtual void show() = 0;
};
class RunCar : public Car
{
public:
virtual void show()
{
cout << "żÉŇÔĹÜ" << endl;
}
protected:
private:
};
class SwimCarDirector : public Car
{
public:
SwimCarDirector(Car *car)
{
m_car = car;
}
void swim()
{
cout << "żÉŇÔÓÎ" << endl;
}
virtual void show()
{
m_car->show();
swim();
}
protected:
private:
Car *m_car;
};
class FlyCarDirector : public Car
{
public:
FlyCarDirector(Car *car)
{
m_car = car;
}
void fly()
{
cout << "żÉŇÔˇÉ" << endl;
}
virtual void show()
{
m_car->show();
fly();
}
private:
Car *m_car;
};
void main()
{
Car * mycar = NULL;
mycar = new RunCar;
printf("-----000\n");
mycar->show();
printf("-----aaa\n");
FlyCarDirector *flycar = new FlyCarDirector(mycar);
flycar->show();
printf("-----bbb\n");
SwimCarDirector *swimcar = new SwimCarDirector(flycar);
swimcar->show();
delete swimcar;
delete flycar;
delete mycar;
system("pause");
return ;
}