gpt4 book ai didi

java - 开闭原则示例

转载 作者:行者123 更新时间:2023-11-30 10:44:52 24 4
gpt4 key购买 nike

我想通过重写此代码在以下示例中应用开闭原则。

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 方法。而且,如果我这样做,那么我会假设这与适配器模式非常匹配。

以我的理解理解有误请指正。

最佳答案

在我看来,这是一个基于ArrayList 实现制作Queue 的示例。首先,我将尝试仅公开 Queue 接口(interface)方法。从 ArrayList 继承的所有方法都应该以某种方式隐藏。

事实是,我们知道在 Java 中您不能在继承过程中隐藏公共(public)方法。然后,您唯一可以采取的方法是覆盖它们并抛出 UnsupportedOperationException 或类似这样的东西。

您需要确保您将基于ArrayList 正确实现Queue 接口(interface)。您应该正确实现 addofferremovepoolelement查看。来自 ArrayList 的其他方法应该抛出一些异常。

这是我对这个问题的看法。

关于java - 开闭原则示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com