之前把主要的设计模式都学了一遍,但是在实际项目中,经常是几个模式一同使用。
我找了一个使用混合模式的场景,并用C++进行实现。
这个场景主要是使用工厂模式+策略模式+门面模式
» Read more: 混合模式的使用Demo
之前把主要的设计模式都学了一遍,但是在实际项目中,经常是几个模式一同使用。
我找了一个使用混合模式的场景,并用C++进行实现。
这个场景主要是使用工厂模式+策略模式+门面模式
» Read more: 混合模式的使用Demo
创建类模式主要描述的是如何创建模式,行为类模式主要是关注管理对象的行为,比如委托什么的。
而结构类模式着重是建立一个软件结构,便于拓展。
行为类模式包括责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式。
结构类模式包括适配器模式,桥梁模式,组合模式,装饰模式,门面模式,享元模式和代理模式。
» Read more: 常用模式比较
行为类模式包括责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式。这些模式都是经常要使用的。 » Read more: 行为类模式比较
结构类模式包括适配器模式,桥梁模式,组合模式,装饰模式,门面模式,享元模式和代理模式。
首先我们来比较一下代理模式和装饰模式。
代理模式和装饰模式其实很类似,装饰模式就是一种特殊的代理模式,两者都有相同的接口,不同点在于代理模式对于代理过程的控制,而装饰模式则是对类的功能加强和减弱。
» Read more: 结构类模式比较
状态模式是一种封装模式,也就是说当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
它有两种使用情况:(1)一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。(2)一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。如果if-else过于庞大,那么状态模式将是很好的选择。
之前我的文章都见过这种方式,将具体的实现class都委托给一个封装类来执行,这种方式非常普遍!比如在访问者模式中,通过
» Read more: 状态模式 C++实现