工厂设计模式

本文探讨了在MVC设计模式中如何通过Factory Method模式实现Controller与View的关联。通常,View会订阅Model的变化,并在构造时调用Model的attach方法,在析构时调用detach方法。为了解耦View与Controller,采用Factory Method模式,在ViewBaseClass中定义了一个MakeController虚方法,由各View子类具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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方法就可以实现所谓“虚构造”的功能了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值