从FrameWork的角度看Creational Pattern
来源:互联网 发布:淘宝刷单推荐 编辑:程序博客网 时间:2024/04/29 21:09
假设程序开发分成2层,第一层是FrameWork,第二层是Application。一个FrameWork可以在多个Application中使用。这样,FrameWork需要独立于Application,即FrameWork不应该需要看到Application的接口。
假设FrameWork需要使用到一个类AbstractA,Application以AbstractA为基类设计派生类ConcreteA。
1,如果ConcreteA对象是由Application创建(Create)的,那么只要使用继承就可以了。不同的Application设计不同的ConcreteA,把ConcreteA对象的指针或者引用作为AbstractA传递给FrameWork就可以了。
2,如果ConcreteA对象是需要FrameWork创建的,那么可以考虑FactoryMethod。不同的Application设计不同的ConcreteA,以及相应的ConcreteCreatorA。Application把ConcreteCreatorA对象的指针或者引用作为AbstactCreatorA传递给FrameWork,FrameWork通过AbstactCreatorA的FactoryMethod创建ConcreteA对象。
假设FrameWork需要使用到一个类AbstractA,Application以AbstractA为基类设计派生类ConcreteA。
1,如果ConcreteA对象是由Application创建(Create)的,那么只要使用继承就可以了。不同的Application设计不同的ConcreteA,把ConcreteA对象的指针或者引用作为AbstractA传递给FrameWork就可以了。
2,如果ConcreteA对象是需要FrameWork创建的,那么可以考虑FactoryMethod。不同的Application设计不同的ConcreteA,以及相应的ConcreteCreatorA。Application把ConcreteCreatorA对象的指针或者引用作为AbstactCreatorA传递给FrameWork,FrameWork通过AbstactCreatorA的FactoryMethod创建ConcreteA对象。
3,比FactoryMethod更进一步,如果Application中需要多个AbstractA的派生类,比如ConcreteA1,ConcreteA2,ConcreteAn。为了避免需要相应的同样多的ConcreteCreatorA1,ConcreteCreatorA2…ConcreteCreatorAn,可以考虑Prototype。这样,Application只需要一个ConcreteCreatorA就可以创建多个AbstractA的派生类对象ConcreteA1,ConcreteA2…ConcreteAn。
4,如果一系列的AbstractA,AbstractB…AbstractN,相应的派生类对象都需要FrameWork创建。可以考虑AbstractFactory。AbstractFactory中可以采取FactoryMethod,也可以采取Prototype。
5,一般来说,AbstractFactory中的ConcreteFactory经常是Singleton。
- 从FrameWork的角度看Creational Pattern
- Creational Pattern
- 从编译器的角度看C代码
- 从组成的角度看JSP
- 从深度心理学的角度看爱情
- 从分布式系统的角度看REST
- 从程序员的角度看DNA
- 从程序员的角度看DNA
- 从操作系统的角度看程序
- 从一个大学生的角度看现代教育
- 从二进制的角度看对象
- 从搜索的角度看互联网
- 从深度心理学的角度看爱情
- 从应用程序的角度看Binder
- 从绘画的角度看程序设计
- 从经理的角度看技术债务
- 从程序员的角度看浮躁?
- 从程序员的角度看浮躁?
- 桌面下雪
- 网页代码常用加解密
- 通过RDWC管理Windows Server 2003
- 热而有感
- 升级到SVN 1.20时发生的BDB版本问题的处理
- 从FrameWork的角度看Creational Pattern
- 表达能力
- Java学习之道
- 参与Google Adsense,全面发挥Blog的创收潜力
- sle4442,sle4428解
- CSS十八般技巧
- 开源与用户成本
- 高手通讯录
- L2TP 控制连接