跪求!老版的step by step 2的 文本
来源:百度知道 编辑:UC知道 时间:2024/06/04 05:37:15
是听力教材 不是其他的谢谢
Design.Patterns.Step.By.Step.2
Template Method使用了对象继承,而继承是一种很强的对象和对象之间的耦合关系,底层模块还是依赖于高层模块,比如子类要知道哪些abstract method要重写,哪些hook method可以做扩展,哪些基类资源可以利用。
strategy模式使用对象之间的组合关系来代替继承,进一步减弱高层模块和底层模块之间的依赖,让底层独立于高层,使其完全符合更符合DIP的原则, 这样底层代码不需要了解高层代码是怎么工作的,高层也不需要知道底层的实现细节,
相对于Template Method模式来说strategy模式革命的更彻底一些。
还拿Report来作一个简单的例子。
Report的输出可以是Html格式的,可以是Word格式的,也可以是PDF格式的,我们可以定义一个Interface:IReportPublisher,在IReportPublisher中定义高层模块和低层模块之间的调用协议。(或者说Contract)
Interface IReportPublisher {public void Publish()}
HTMLReportPublisher : IReportPublisher
WordReportPublisher : IReportPublisher
PDFReportPublisher : IReportPublisher
Report
{
Public void GenerateReport()
{
…
reportPublisher = MyContext.GetService(…)
reportPublisher.Publish(reportData)
…
}
}
当然实现strat