GOF设计模式里面介绍了23种设计模式,实际上除了这23种模式之外,还有一些常用的模式。比如Uncle Bob写的大作:Agile software development里面提及的几种,个人感觉还是挺好的。
Abstract Server模式
这是一种非常简单的模式,可能大家都在使用,只是没有给它取名而已。但是这个模式所涉及的概念还是相当重要的。Agile Software Development书上提到了一个例子。就是一个开关控制一个灯。开关可以查询灯的状态,而且可以打开关闭。一个简单的设计如下:
我们可以写一些伪代码:
class Light
{
public:
Light(): m_bOn(false)
{}
void TurnOn()
{
m_bOn = true;
// turn on light
}
void TurnOff()
{
m_bOn = false;
// turn off light
}
bool IsOn() const
{
return m_bOn;
}
private:
bool m_bOn;
};
class Switch
{
public:
void Pre