工厂设计模式

MSDN上的相关文章: http://msdn.microsoft.com/en-us/library/Ee817667(pandp.10).aspx

 

<<Pattern Oriented Software Architecture>>  第137页, 有关于Factory Method的使用例子。

这一小节本身是在谈论在MVC设计模式里如何实现Controller并将其和对应的View相联系。 一般的, 会实现一个View Base Class, 这个Class继承于Observor类( 因为在MVC中View要Subscribe Model类的变化,保证和Model中的数据保持一致),因此它会实现Observor类定义的接口—— update(供Model类调用), 它还会在View构造时调用Model的attach方法,以及在View析构的时候调用Model的detach方法。 这个View Base Class还会定义一些作为View应该具备的接口,比如Draw, 这样,每个View 的继承类实现一个自己独特的展现数据的Draw方法。 在MVC模式中,每个View的子类都有一个自己相关联的Controller,在View初始化的时候,View会创建一个和自己相关的Controller, 不同的View的子类创建不同的Controller类,如果不用Factory Method Pattern的话,我想只要在每个View的子类的构造函数里写new XXXController就可以了。 但这本书里使用了Factory Method Pattern, 它在View Base Class 里设计了一个 MakeController的虚方法。每个View的子类实现该方法。 比如: return new XXXController(每个子类都知道自己要new 什么类型的Controller), 当然返回的是各个Controller的基类。 在View Base Class 里调用MakeContoller, 这样的调用会发生动态绑定,会根据具体的View调用其所实现的MakeController方法。 需要注意的是,MakeController方法不能在View Base Class的构造函数里调用, 这是C++语言的一种限制,即在构造函数里的虚函数调用不发生动态绑定。为此, View Base Class实现了一个Initialize方法(不是虚方法)。 在该方法中调用MakeController方法就可以实现所谓“虚构造”的功能了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值