좋은 코딩이란
싱글톤(Singleton Pattern)
class SingletonInstance:
__instance = None
@classmethod
def __getInstance(cls):
return cls.__instance
@classmethod
def instance(cls, *args, **kargs):
cls.__instance = cls(*args, **kargs)
cls.instance = cls.__getInstance
return cls.__instance
class MyClass(BaseClass, SingletonInstance):
pass
c = MyClass.instance()
팩토리 패턴(Factory Pattern)
내가 지금쓰는 builder 구조랑 같음. 즉 main flow에서 실행하는 변수들을 생성할 때, 직접 생성자를 호출하지 않고 한 단계 wrapping된 factory class에서 생성한다. 모든 instance의 생성을 class의 생성자에에 의해서 전달 받겠다는 것임.
전략 패턴(Strategy Pattern)
새로운 클래스를 정의할 때, 필요한 class/interface들을 골라서 상속받아서 쉽게 정의한다.
간단히 정리하면, 몇가지 option에 해당하는 method들을 interface class들을 여러개 만들어 놓고, 새로운 class를 정의할 때 여러 선택지 들 중에서 골라서 상속 받아 method로 사용하는 것이다.
한마디로 자식이 부모의 각각의 method에 대해, 여러가지 선택가능한 옵션 중 하나를 골라서 상속받음.(여러개의 method중에서 골라서 상속받는게 아니라, 1개의 method마다 옵션이 N개씩 존재하는 것임. 한마디로 5지선다로 1개를 고르는 것임)
- 부연설명
한마디로 부모 클래스에서 자속이 상속을 할 때, 모든 method를 그냥 상속 받으면 나중에 이걸 일일이 overriding시켜야하는 문제가 생길 수 있음.
그래서 아이에 method 5개를 interface로 만들어 놓고, 부모 클래스를 상속받은 자식 클래스가, 이 5개의 interface 중에서 1개를 골라서 전략적으로 "장착"하는 것임.
예를 들어 character 클래스의 이동방식에 걷기, 뛰기, 날기, 구르기 등 4가지 선택가능한 method가 있다면 이거를 각각 overriding하는게 아니라, 4가지 method를 interface로 만든다음, character 클래스를 상속받은 자식 클래스가 이 4개 중에서 1개를 골라서 장착해서 사용함.
아래 블로그에 완벽히 설명되어있음.
http://blog.naver.com/asuraiv1/50193647631
Python Coding Tip
metaclass=Singleton
Decorator
임의의 함수의 앞, 뒤에 추가적인 호출 로직을 덧 붙이는 것을 데코레이터로 손 쉽게 할 수 있다.
__call__을 이용하면 @~~와 같은 decorator를 만들 수 있음.
https://github.com/naver/claf/blob/master/claf/decorator/register.py
Mixin
나만의 코딩 철학
'Development > Free Topic' 카테고리의 다른 글
Excel, Spread Sheet(google), VBA (0) | 2014.06.17 |
---|---|
XNA from Siverlight 방법 (0) | 2014.06.17 |
안드로이드 여러가지 트러블 슈팅 (0) | 2014.06.10 |
안드로이드 파일 입출력, 경로, 모드 / 네트워크 통신 (2) | 2014.06.10 |
[톰캣] 리눅스 톰캣 재시작 (0) | 2014.05.18 |
댓글