반응형
https://dev-momo.tistory.com/entry/Adapter-Pattern-%EC%96%B4%EB%8C%91%ED%84%B0-%ED%8C%A8%ED%84%B4
1. 기존의 출력 프린터가 있다고 가정
2. 해쉬태그(#)를 붙여서 출력해야할 일이 생김
3. 어댑터 사용
1. 기존의 출력 메소드가 있다고 가정
Printer.js
class Printer {
constructor() {
this.textArr = [];
}
pushText(text) {
this.textArr.push(text);
}
print() {
return this.textArr.join(" ");
}
}
export default Printer;
main.js
import Printer from "./Printer.js";
const printer = new Printer();
printer.pushText("Hello");
printer.pushText("Design");
printer.pushText("Pattern");
const result = printer.print();
// Hello Design Pattern
console.log(result);
2. 해쉬태그(#)를 붙여서 출력해야할 일이 생김
HashTagPrinter.js
class HashTagPrinter {
constructor() {
this.textArr = [];
}
pushText(text) {
this.textArr.push(text);
}
printWithHashTag() {
return this.textArr.map((text) => `#${text}`).join(" ");
}
}
export default HashTagPrinter;
main.js
import Printer from "./Printer.js";
import HashTagPrinter from "./HashTagPrinter.js";
// const printer = new Printer();
const printer = new HashTagPrinter();
printer.pushText("Hello");
printer.pushText("Design");
printer.pushText("Pattern");
// const result = printer.print();
// printer.print()는 명세가 맞지않아 에러가 발생
// const result = printer.printWithHashTag();으로 변경하는 방법은
// 실제 코드에서는 이 부분만 수정한다는 보장이 없다
// 만약 다시 이전 프린터를 사용한다고 하면 또다시 같은 곳을 수정해줘야한다
const result = printer.printWithHashTag();
// #Hello #Design #Pattern
console.log(result);
3. 어댑터 사용
HashTagAdapter.js
class HashTagAdapter {
constructor(hashTagPrinter) {
this.printer = hashTagPrinter;
}
pushText(text) {
this.printer.pushText(text);
}
print() {
return this.printer.printWithHashTag();
}
}
export default HashTagAdapter;
HashTagPrinter.js는 그대로 사용
class HashTagPrinter {
constructor() {
this.textArr = [];
}
pushText(text) {
this.textArr.push(text);
}
printWithHashTag() {
return this.textArr.map((text) => `#${text}`).join(" ");
}
}
export default HashTagPrinter;
main.js
import HashTagPrinter from "./HashTagPrinter.js";
import HashTagAdapter from "./HashTagAdapter.js";
const printer = new HashTagAdapter(new HashTagPrinter());
printer.pushText("Hello");
printer.pushText("Design");
printer.pushText("Pattern");
const result = printer.print();
// #Hello #Design #Pattern
console.log(result);
반응형
'Javascript' 카테고리의 다른 글
자바스크립트 페이지네이션 (리액트, 부트스트랩) (0) | 2020.12.23 |
---|---|
모던 자바스크립트 튜토리얼 (0) | 2020.12.09 |
자바스크립트 pc 모바일 감지 (0) | 2020.11.27 |
html 태그의 부모태그 안의 텍스트 찾기 (0) | 2020.11.27 |
자바스크립트 기본 모음 (0) | 2020.11.03 |