小编Sem*_*oor的帖子

mixins能解决脆弱的基类问题吗?

在关于编程语言的课程中,我的教授引用mixins作为脆弱基类问题的解决方案之一.维基百科也习惯列出(Ruby)mixins作为脆弱基类问题的解决方案,但前段时间有人删除了对mixins的引用.我仍然怀疑,对于脆弱的基类问题,它们可能在某种程度上优于继承.否则,为什么教授会说他们有所帮助?

我举一个可能的问题的例子.这是一个简单的Scala实现(Java)问题,教授给我们解释了这个问题.

考虑以下基类.假设这是列表的一些非常有效的特殊实现,并且在其上定义了更多操作.

class MyList[T] {
    private var list : List[T] = List.empty
    def add(el:T) = {
        list = el::list
    }
    def addAll(toAdd:List[T]) : Unit = {
        if (!toAdd.isEmpty) {
            add(toAdd.head)
            addAll(toAdd.tail)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还要考虑以下特征,它应该添加size到上面的列表中.

trait CountingSet[T] extends MyList[T] {
    private var count : Int = 0;
    override def add(el:T) = {
        count = count + 1
        super.add(el)
    }
    override def addAll(toAdd:List[T]) = {
        count = count + toAdd.size;
        super.addAll(toAdd);
    }
    def size : Int …
Run Code Online (Sandbox Code Playgroud)

extends scala traits mixins

5
推荐指数
1
解决办法
410
查看次数

标签 统计

extends ×1

mixins ×1

scala ×1

traits ×1