【发布时间】:2016-09-12 15:23:45
【问题描述】:
我想通过重写这段代码在下面这个例子中应用开闭原则。
class MyQueue<E> extends ArrayList<E> implements Queue<E> {
int front=0, back=0;
MyQueue() { }
…
void put(E e) { add(back++, e); ...}
E get () { E elem = get(front++); …}
}
解决方案最匹配哪种设计模式,为什么?解释为什么它比下一个最佳匹配更好。
我很难考虑这个类会扩展哪些功能。它已经有了 getter 和 setter。在不知道可以应用什么类型的扩展的情况下,我不确定如何重写此代码。
我所知道的:OCP 对扩展开放,对修改开放。因此,一般的方法是弄清楚如何抽象它。所以我最初的想法是把它变成一个带有抽象方法的抽象类。然后,每个扩展MyQueue() 的类都可以实现它想要的getter 和setter 方法。而且,如果我这样做,那么我会假设这与适配器模式非常匹配。
请纠正我对我的理解的任何误解。
【问题讨论】:
-
我不明白为什么这被否决了......我遵循了提问的指导方针。有人可以澄清吗?在不知道原因的情况下被否决是没有帮助的。
-
很可能因为看起来像家庭作业和征求意见而被否决。
-
问题很好。也许接近家庭作业,但在实践中仍然更像是对
OCP的理解。这并不总是很明显。 -
感谢您告诉我!
标签: java open-closed-principle