fullstack

[디자인 패턴] 중재자 패턴 (Mediator Pattern)

디자인 패턴
- 개념
중재자 패턴은 말 그대로 서로 명령을 주고 받는 부분을 중재하는 패턴이다
클래스간에 복잡하게 서로 명령을 주고 받는 것을 중재자에게만 전달하고, 중재자는 해당 명령을 적절한 개체에게 전달해 준다. 즉, 클래스간의 복잡한 로직을 캡슐화하여 하나의 클래스에 위임하여 처리하는 패턴이다
중재자 패턴은 M:N 관계에서 M:1 관계로 복잡도를 떨어뜨려 유지보수 및 재사용에 유리하며, 복잡한 상호작용을 하기 위한 복잡한 관계를 단순화 시킬 수 있다.



- 구현


Mediator는 Colleague 객체와 교류하는데 필요한 인터페이스를 정의합니다

ConcreteMediator는 Colleague 객체와 조화를 이루며 협력 행동을 구현하고, Colleague들을 파악하고 관리합니다

Colleague 클래스들은 자신의 중재자 객체가 무엇인지 파악하고, 다른 객체와 통신이 필요하면 그 중재자를 통해 통신되도록 하는 동료 객체입니다

Colleague는 Mediator에서 요청을 송수신하고, Mediator는 필요한 Colleague 사이에 요청을 전달합니다




- 관련패턴

퍼사드 패턴 (Facade Pattern) - http://cpp11.tistory.com/56

감시자 패턴 (Observer Pattern) - http://cpp11.tistory.com/54


[디자인 패턴] 감시자 패턴 (observer pattern)

디자인 패턴

- 개념

감시자 패턴은 하나의 개체가 여러 개체의 상태 변화를 감지하는 역할을 담당하게 하는 패턴이다

감시자는 다른 개체의 상태의 변화를 통보를 받는 역활과 이 변화를 구독하기를 원하는 개체에게 알려주는 역할을 한다

다른 개체의 상태 변화에 따라 의존하는 개체가 있다면 감시자 패턴을 고려한다




- 구현


Observer 클래스를 상속받아 만든 클래스들 (ToneViewer, BrightnessViewer, SaturationViewer) 은 Subject 클래스의 AddObserver() 함수를 통해서 Subject 클래스를 상속한 Picture 클래스에 대해서 구독을 등록할 수 있다

(당연히 RemoveObserver() 함수를 통해서 해제도 가능)


Picture 클래스에서 특정 이벤트가 일어나면 Notify() 함수를 호출하여 구독중인 모든 클래스들에게 알린다


그럼 구독중인 각각의 클래스들은 Update() 함수를 호출하게 되고, 각각 구현된 원하는 동작을 하면된다


이렇게 하면 Subject와 Observer 간에 의존도가 없어진다. 즉, Subject는 Observer에 대한 목록을 관리하기만 하면 된다




- 관련 패턴

중재자 패턴 (Mediator Pattern) - http://cpp11.tistory.com/55

단일체 패턴 (Singleton Pattern)


[GAE] Google App Engine에 python flask 개발환경 셋팅하기

Web

google app engine 에서 python flask 개발환경을 셋팅해 보겠습니다



google app engine console - https://console.cloud.google.com/


우선 새 프로젝트를 생성해야겠죠?



언어는 당연히 python을 선택합니다



지역을 선택합니다




알아서 백엔드 서비스를 만들어줍니다



오른쪽 상단의 이 아이콘을 눌러 Google Cloud Shell을 활성화 해 줍니다




Shell 이 활성화 되었습니다




다음과 같이 입력합니다




DIR=src/yobot-1/python_flask => DIR 이라는 변수에 폴더경로를 지정합니다

git clone https://github.com/GoogleCloudPlatform/appengine-flask-skeleton $DIR 

=> DIR에 지정한 폴더 경로에 google에서 만들어놓은 flask 뼈대 저장소를 clone 합니다


그럼 벌써 기본적인 flask 개발환경 셋팅이 끝났습니다 

서버환경 만드는게 이렇게 쉽습니다 구글 갓 입니다 ..


빌드는 해당경로로 이동 후 ( cd DIR )

gcloud app deploy app.yaml --project myProject ( myProject = 내 프로젝트명) 명령어로 할 수 있습니다


빌드 후 다음과 같이 내프로젝트명.appspot.com 주소로 열어보시면 Hello World! 를 볼 수 있습니다



- 끝 -