繁体   English   中英

这是一个很好的设计:使用纯抽象类来方便工厂方法的使用

[英]Is this good design: using a pure abstract class to facilitate the use of factory method

我有几个JPanels的GUI组合。 我想使用工厂方法来实例化JPanels。 这是一个显示我想要做的UML图:

在此输入图像描述

简单地说,工厂方法需要使用JPanelSimulatorSubscriber方法,但是如果createPanel()方法返回JPanel ,则SimulatorFactory将无法调用setSimulator(Simulator)方法。 相反,如果它返回一个SimulatorSubscriber ,它将无法将面板添加到它正在制作的gui中。

我的第一个想法是使用演员........我不需要详细说明..

其次,我想要做我在图中绘制的内容。

这是好的/通常的做法,还有其他选择吗? 也许我对工厂方法的使用也是关闭的。

我会清楚地分开模型和视图。

因此,工厂不能同时创建“业务/模型元素”,如模拟器和UI元素,如SimulatorDisplay。 所以我会用两个工厂。 一个用于业务元素,一个用于UI元素。

我会避免使用继承来解决所有可能的问题。 因此不再使SimulatorDisplay继承自JPanel。 我将在SimulatorDisplay中使用JPanel字段,并在其中创建一个带有getPanel()方法的“HasPanel”接口。

我不会直接向订阅者提供完整的模拟器,但使用真实的侦听器机制,只提供模拟器的公共状态而不是模拟器本身。

一般情况下,不要滥用Java中的Abstracts类和继承(可能来自接口)。 你真的有限,java不支持多重继承。 但即使它有,大多数时候,这不是那么有用。

看起来太复杂,不常见。 我认为这是相当遥远的,但这只是我的意见。

如果你能写一篇关于你试图在这里解决的问题的简洁陈述,我可能会帮助我们两个人,除了通用的“使用工厂安装JPanels”之外。 我知道工厂是什么,我知道什么是Swing UI,但是你遇到的困难是什么让你认为你需要一个设计模式? 或者你为了自己的缘故注射了一个?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM