반응형 Strategy pattern3 [C++] Design Pattern - Policy Base Design [문제점] 아래의 코드에서 List s 가 멀티스래드에 안전하지 않다고 가정한다. 동기화를 위해서 Lock/Unlock의 구현이 필요하다. 그런데 사용자에 따라 List에 내장된 Lock/Unlock을 원치 않을 수도 있다. 불필요한 Lock/Unlock의 경우 성능 저하가 발생할 수도 있기 때문이다. 그러므로 Lock/Unlock은 사용자가 포함시킬 것인지 포함시키지 않을 것인지 선택 할 수 있어야 하겠다. 1. 변하는 것과 변하지 않는 것을 분리한다. * 변하는 것을 가상함수화하는 방법 -> Template Method * 변하는 것을 별도의 클래스로 구현하는 방법 -> Strategy Pattern 2. Strategy pattern을 이용해서 Lock/Unlock을 구현해보자. #include u.. 2020. 12. 5. [C++]Design Pattern - 변하는 것을 분리하기 [문제점] 가령 이름, 나이, 주소 등을 입력하는 EditBox가 있고, 각 EditBox는 입력 목적에 따라 허용 문자를 달리 할 수 있도록(정책) EditBox를 구현해보자. 다음의 코드는 이에 대한 예가 될 수 있겠다. #include #include #include using namespace std; class Edit { string data; public: virtual bool validate(char c) { return isdigit(c); } string getData() { data.clear(); while (1) { // 한글자 입력 받기 char c = _getch(); // Enter Key > 입력 완료 if (c == 13) break; // 입력 유효성 검사 (정책) i.. 2020. 12. 1. [C++]Design Pattern - 변하는 것을 분리하기 [문제점] 가령 이름, 나이, 주소 등을 입력하는 EditBox가 있고, 각 EditBox는 입력 목적에 따라 허용 문자를 달리 할 수 있도록(정책) EditBox를 구현해보자. 다음의 코드는 이에 대한 예가 될 수 있겠다. #include #include #include using namespace std; class Edit { string data; public: virtual bool validate(char c) { return isdigit(c); } string getData() { data.clear(); while (1) { // 한글자 입력 받기 char c = _getch(); // Enter Key > 입력 완료 if (c == 13) break; // 입력 유효성 검사 (정책) i.. 2020. 12. 1. 이전 1 다음 반응형