객체 지향 프로그램에 대해 생각할 수있는 디자인 패턴이 있습니까? 최근에으로 Door
클래스 의 구현을 보았 기 때문에 이것을 묻습니다 Lock
. 테스트의 일부였으며 코드가 Null Object 패턴을 따른다고 답했습니다.
class Lock
{
public:
virtual void close() = 0;
virtual void open() = 0;
virtual bool is_open() const = 0;
virtual ~Lock() { }
};
class DummyLock
: public Lock
{
private:
DummyLock();
DummyLock(const DummyLock&) = delete;
DummyLock& operator=(const DummyLock&) = delete;
private:
void close() { }
void open() { }
bool is_open() const { return true; }
public:
static DummyLock m_instance;
};
class Door
{
public:
Door() : m_lock(DummyLock::m_instance) { }
Door(Lock &lock) : m_lock(lock) { }
public:
Lock& get_lock() const { return m_lock; }
private:
Lock &m_lock;
};
이것은 내가 생각하게 만들었습니다 : 설명이 너무 간단 하더라도이 코드는 좋은 디자인 패턴을 따릅니다 (이 클래스는 잠금 장치가있는 도어 클래스를 설계하고 있습니다).보다 복잡한 코드를 작성하는 경우 항상 디자인 패턴이 있어야합니다 팔로 잉?