Adapter_Pattern - 8BitsCoding/RobotMentor GitHub Wiki
์ ์
์ฌ์ ์ ์ผ๋ก Adapter๋ ๊ธฐ๊ณ,๊ธฐ๊ตฌ ๋ฑ์ ๋ค๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๋ถ๊ฐ๊ธฐ๊ตฌ์ด๋ค.
์ฌ๊ธฐ์ ์๊ฐํด์ํ ๊ฒ ๊ธฐ๊ณ,๊ธฐ๊ตฌ๋ ์๊ณ ๋ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉ์ ์ํ ๋ถ๊ฐ๊ธฐ๊ตฌ์์ ๊ธฐ์ตํ์
์ญ์ ์ฝ๋๋ก ์ค๋ช ํด์ผ ์ดํด๊ฐ ๋ ๋ฏ.
ํต์ฌ์
์๊ณ ๋ฆฌ์ฆ์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค.
์์๋ก ์ค๋ช
์๊ตฌ์ฌํญ :
๋ ์์ ๋ํ ๋ค์ ์ฐ์ฐ์ ์ํํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฃผ์ธ์
- ์์ ๋ ๋ฐฐ์ ์๋ฅผ ๋ฐํ : twiceOf(Float):Float
- ์์ ๋ฐ(1/2)์ ์๋ฅผ ๋ฐํ : halfOf(Float):Float
๊ตฌํ ๊ฐ์ฒด ์ด๋ฆ์ 'Adapter'์ผ๋ก ํด์ฃผ์ธ์
Math ํด๋์ค์์ ๋ ๋ฐฐ์ ์ ๋ฐ์ ๊ตฌํ๋ ํจ์๋ ์ด๋ฏธ ๊ตฌํ๋์ด์์ต๋๋ค.
// Math์์ ๋ ๋ฐฐ์ ์ ๋ฐ์ ๊ตฌํํ๋ ํจ์๋ ๊ตฌํ๋์ด ์์.
// ๋จ, double๋ก ๋ฐ๊ณ double๋ก ๋ฆฌํด float์ผ๋ก ๊ณ ์น๊ณ ์ถ๋ค๋ฉด?
class Math {
public:
double twoTime(double num) { return num * 2; }
double half(double num) { return num/2; }
}
ํด๊ฒฐ์ฑ
class I_Adapter {
public:
// ์ํ๋ ๊ธฐ๋ฅ
virtual float twiceOf(float f);
virtual float halfOf(float f);
}
class Adapter_impliment : public I_Adapter {
// (์ฐธ๊ณ ) ํ๋ณํ์ JAVA๋ก ๊ตฌํ ํ๋ณํ์ ์์์ ๊ณ ๋ คํ ๊ฒ.
public:
Math math;
float twiceOf(float f) {
return math.twoTime(f.doubleValue()).floatValue();
}
float halfOf(float f) {
return math.half(f.doubleValue()).floatValue();
}
}
void main() {
I_Adapter adapter = new Adapter_impliment();
adapter.twiceOf(100);
adapter.haleOf(100);
}
์ฅ์ ์ ๋๊ปด์ง๊ฒ ์ง๋ง ํจ์์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ถ๊ฐ ํ ์ ์์.