![]() |
1
11
我能想到的最好的选择是将功能抽象到接口中,并让每个类型实现该接口。
编辑 经过编辑,肯定有一个明确的方法来做到这一点。每个处理器将实现一个特定的接口:
然后你的方法就是:
|
![]() |
2
10
换句话说,你应该使用 virtual function .
你仍然可以: 另一种选择 应该能按照这些思路做些事情 :
|
![]() |
3
3
访客模式正是你想要达到的。然而,一个“好的老式多态性”应该可以满足您的需要。例如:
然后
你提到“它需要整理出它是什么样的东西”,所以你现在所需要的就是拥有你的
但是如果 Visitor pattern 是你真正需要的,以下是你需要的一个例子:
那么
但既然这意味着
要问的两个问题是
我通常更喜欢把大部分混凝土放在同一个地方,然后推广到其他地方;这有助于维护(例如添加和删除特性)。尽管访问者模式有助于将操作集中在同一个类中。。。 |
![]() |
4
1
这听起来像是面向对象编程的基本思想之一。创建一个声明doSomething的超类,然后创建子类,每个子类都以不同的方式实现它。即:
如果您的一些子类不能执行该函数,而应该给出一条错误消息,那么只需不在父类型中使用abstrct,而是让父类型执行“无效”处理,如:
|
![]() |
5
1
问题是策略模式的教科书范例。将特定的behavoir提取到单独的类中,这些类实现相同的接口(使用doIt()之类的方法)。然后给每个特定类一个对“行为”的引用—您希望它拥有的对象。 2) 你不必重写一个方法(重写方法的危险可能是类爆炸)。 |
![]() |
6
0
这可以在尝试将一个模式强加给它之前使用普通的旧OO多态性来处理。
Java将解析与参数类型最匹配的方法,因此如果您有扩展TingB的TingC,那么将调用foo(TingB),直到在Processor类中定义foo(TingC)。
|
![]() |
7
0
您几乎没有选择:
|