swa*_*kam 9 java design-patterns strategy-pattern visitor-pattern
我已经学会了这两种模式但却不理解这两种模式之间的差异.
我不知道场景,何时何地使用这些模式.
任何人都可以解释差异和用例吗?
访问者模式意图:
表示要对对象结构的元素执行的操作。访问者允许您定义新操作,而无需更改其操作的元素的类。
在以下情况下使用访问者模式:
尽管访问者模式提供了在不更改 Object 中现有代码的情况下添加新操作的灵活性,但这种灵活性也带来了一个缺点。
如果添加了新的 Visitable 对象,则需要更改 Visitor 和 ConcreteVisitor 类中的代码。有一个解决这个问题的方法:使用反射,这会对性能产生影响。
有关更多详细信息,请参阅oodesign 文章和sourcemaking文章
策略模式意图:
定义一系列算法,封装每个算法,并使它们可以互换。策略让算法独立于使用它的客户端而变化。
策略可以让你改变一个对象的内脏。
有关更多详细信息,请参阅以下 SE 问题:
访问者模式用于遍历对象层次结构并提供一些功能,例如打印或报告等,我使用它来提供不同的格式(文本/HTML),通过编写多个访问者(每种格式一个)来打印对象层次结构。层次结构中的对象是可访问的。
策略模式用于根据输入选择特定的逻辑路径。一个典型的示例是身份验证过滤器,其中根据AuthorizationHTTP 标头中的值,选择并运行不同的身份验证策略(例如 NTLM/Negotiate/Basic)。过滤器将保存对 AuthenticationStrategy 接口的引用,根据传入的请求,选择特定的身份验证策略并将其分配给该引用,并且后面的代码不需要知道所使用的确切策略。
| 归档时间: |
|
| 查看次数: |
3950 次 |
| 最近记录: |