-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAdapter.cpp
More file actions
106 lines (89 loc) · 1.97 KB
/
Adapter.cpp
File metadata and controls
106 lines (89 loc) · 1.97 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//
// Adapter.hpp
// COns
//
// Created by zhTian on 16/4/16.
// Copyright © 2016年 zhTian. All rights reserved.
//
#ifndef Adapter_hpp
#define Adapter_hpp
#include <iostream>
class Muslim
{
public:
Muslim(){};
Muslim(const Muslim&);
Muslim& operator=(const Muslim&);
virtual ~Muslim() = default;
public:
virtual void performMuslimRitual() const = 0;
};
class MuslimFemale : public Muslim
{
public:
MuslimFemale(){};
MuslimFemale(const MuslimFemale&);
MuslimFemale& operator=(const MuslimFemale&);
virtual ~MuslimFemale(){};
public:
virtual void performMuslimRitual() const
{
std::cout << "Muslim girl performs Muslim ritual." << std::endl;
}
};
class Hindu
{
public:
Hindu(){};
Hindu(const Hindu&);
Hindu& operator=(const Hindu&);
virtual ~Hindu() = default;
public:
virtual void performsHinduRitual() const = 0;
};
class HinduFemale : public Hindu
{
public:
HinduFemale(){};
HinduFemale(const HinduFemale&);
HinduFemale& operator=(const HinduFemale&);
virtual ~HinduFemale(){};
public:
virtual void performsHinduRitual() const
{
std::cout << "Hindu girl performs Hindu ritual." << std::endl;
}
};
class MuslimRitual
{
public:
MuslimRitual(){};
MuslimRitual(const MuslimRitual&);
MuslimRitual& operator=(const MuslimRitual&);
virtual ~MuslimRitual(){};
public:
void carrayOutRitual(Muslim *muslim)
{
std::cout << "On with the muslim rituals." << std::endl;
muslim->performMuslimRitual();
}
};
//Adapter
class MuslimAdapter : public Muslim
{
public:
MuslimAdapter();
MuslimAdapter(const MuslimAdapter&);
MuslimAdapter& operator=(const MuslimAdapter&);
virtual ~MuslimAdapter(){};
public:
MuslimAdapter(Hindu *h) : m_hindu(h){}
public:
virtual void performMuslimRitual() const
{
m_hindu->performsHinduRitual();
}
private:
Hindu *m_hindu;
};
#endif /* Adapter_hpp */