I m试图设计一个等级等级等级,并配以类似等级,不构成“一种”关系。 请打电话<代码>Model。 这些班级意在与使用<代码>Model的类似算法相配,但要求并不相同。 请打电话<代码>战略代码>。 陷阱是<代码>。 战略代码>类别要求从<代码>Model类别中提取许多相同内容,但并非所有<代码>Model类别都能够采用这些必要方法。 我不想有空洞的“麻烦”方法,而这种方法只会扔下<条码>。 无支持的Exception,而是有一种基于类型的安全混合处理方法——我是否可以适用某种设计模式?
例如,
object Main extends App {
trait A {
def f(one: Int): Int
def g(two: Int): Int
def h(three: Int): Int
}
class A1 extends A {
override def f(one: Int): Int = {one + 1}
override def g(two: Int): Int = {two + 2}
override def h(three: Int): Int = {assert(false); 0}
}
class A2 extends A {
override def f(one: Int): Int = {assert(false); 0}
override def g(two: Int): Int = {two - 2}
override def h(three: Int): Int = {three - 3}
}
trait B {
def combine(i: Int): Int
}
trait B1 extends B {
this: A =>
override def combine(i: Int) = {f(i) + g(i)}
}
trait B2 extends B {
this: A =>
override def combine(i: Int) = {g(i) + h(i)}
}
override def main(args: Array[String]): Unit = {
val a11 = new A1 with B1
val a22 = new A2 with B2
println(a11.combine(3))
println(a22.combine(3))
val a12 = new A1 with B2
println(a12.combine(3))
}
}
www.un.org/Depts/DGACM/index_french.htm 战略代码>类别。 <代码>A1的通知不能执行<代码>h(,A2
可能无法执行f(>
>,视战略类别而定,这可能不会成为问题。 因此,我能够发现,A的执行能够与B的执行形成协调,并及时加以执行。
I ve 曾使用自行制作的表示比通常延伸的“is a”关系多得多。