본문 바로가기
반응형

프로그래밍 이야기/C++ 기초26

[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.
[C++] 예제로 배우는 객체 지향(Prototype Pattern) Copy & Paste 기능 추가하기 타입코드를 사용하는 방법 새로운 도형이 추가되면 기존 코드가 수정(추가)된다. OCP를 만족하지 못한다. 가상함수를 사용하는 방법 새로운 도형이 추가 되어도 기존 코드가 수정되지 않는다. OCP를 만족한다. "Prototype"이라 불리는 디자인 패턴 // Exmaples.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include #include using namespace std; class Shape { public: int type; virtual void Draw() { cout 가상함수를 사용하는 방법 /*switch (v[k]->type) { case 1: case 2: case 3: break.. 2020. 11. 25.
반응형