设计模式之抽象工厂模式
2016-05-19 20:34
309 查看
[b]抽象工厂模式:[/b]提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
[b]也许应该换一种方式,或许应该先把类图给大家呈现出来。感觉前面的模式讲解因为代码过多,估计没有多少人能够坚持看下去。[/b]
不过在给出大家类图之前还是建议将之前的pizza店中的工厂模式看一下,因为这个类图还是基于上面的例子。看着英文的名字大致也可以明白类图。
在这里同样给出工厂方法的类图,大家通过比较来看一下两个模式之间的不同点:
在这里就不在给那些长且无用的代码了 (给了也没人看,~~~~(>_<)~~~~)
那么我们现在做一个简单的总结吧。毕竟我们已经在设计模式这条路上走了一段距离:
[b]OO基础:抽象、封装、继承、多态[/b]
[b] OO原则:[/b]
[b] 1.封装变化;[/b]
[b] 2.多用组合,少用继承;[/b]
[b] 3.针对接口编程,不针对实现编程;[/b]
[b] 4.为交互对象之间的松耦合设计而努力;[/b]
[b] 5.类应该对扩展开放,对修改封闭;[/b]
[b] 6.依赖抽象,不要依赖具体类[/b]
[b] OO模式:[/b]
[b] 1.策略模式 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。[/b]
[b]
[/b]
[b] 2.观察者模式 在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。[/b]
[b]
[/b]
[b] 3.装饰者模式 动态的将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。[/b]
[b]
[/b]
[b] 4.工厂方法模式 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。[/b]
[b]
[/b]
[b] 5.抽象工厂模式 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类[/b]
[b]
[/b]
[b]也许应该换一种方式,或许应该先把类图给大家呈现出来。感觉前面的模式讲解因为代码过多,估计没有多少人能够坚持看下去。[/b]
不过在给出大家类图之前还是建议将之前的pizza店中的工厂模式看一下,因为这个类图还是基于上面的例子。看着英文的名字大致也可以明白类图。
在这里同样给出工厂方法的类图,大家通过比较来看一下两个模式之间的不同点:
在这里就不在给那些长且无用的代码了 (给了也没人看,~~~~(>_<)~~~~)
那么我们现在做一个简单的总结吧。毕竟我们已经在设计模式这条路上走了一段距离:
[b]OO基础:抽象、封装、继承、多态[/b]
[b] OO原则:[/b]
[b] 1.封装变化;[/b]
[b] 2.多用组合,少用继承;[/b]
[b] 3.针对接口编程,不针对实现编程;[/b]
[b] 4.为交互对象之间的松耦合设计而努力;[/b]
[b] 5.类应该对扩展开放,对修改封闭;[/b]
[b] 6.依赖抽象,不要依赖具体类[/b]
[b] OO模式:[/b]
[b] 1.策略模式 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。[/b]
[b]
[/b]
[b] 2.观察者模式 在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。[/b]
[b]
[/b]
[b] 3.装饰者模式 动态的将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。[/b]
[b]
[/b]
[b] 4.工厂方法模式 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。[/b]
[b]
[/b]
[b] 5.抽象工厂模式 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类[/b]
[b]
[/b]
相关文章推荐
- 斐波那契数列的数学分析
- 一个数组实现两个栈
- Block从简单到高级的使用,以及项目中经常使用的场景
- JAXP对XML文档进行DOM解析实现增删改
- 数值调节按钮
- M进制与N进制之间的转换
- AngularJS控制器详情
- 数据库连接池C3P0最常用配置
- Ubuntu下类似 Mac下的 Quicksilver, Alfred 的快捷键工具
- 虚拟机的三种网络模式
- Problem 2136 取糖果---FUOJ (线段树+维护)
- 正则表达式lastIndex属性浅析
- Codeforces 484D-kindergarten
- 从零开始学_JavaScript_系列(17)——dojo(6)(声明一个类declare)
- poj 3352 Road Construction 双连通分量+缩点 模板
- 详谈android启动模式
- bzoj 1984(线段树+树链剖分)
- 解决Linux MySQL报错ERROR 2002
- nyoj 171 聪明的kk 第三届河南省程序设计大赛
- c语言总结