某造船厂可以根据客户的需求生产集装箱船、客滚船、冷藏船等船舶。用简单工厂模式模拟造船厂对船舶的生产(用netbean的Java语言),并在组合框中(netbean的JFrame)选中想要生产的船舶的种类后用图片显示出所生产的船舶。
时间: 2023-06-25 09:05:10 浏览: 166
用Java实现工厂模式
5星 · 资源好评率100%
好的,我可以帮你解决这个问题。首先,简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象的创建逻辑。该模式使用一个工厂类,该类负责创建对象,并使用子类来处理创建过程。在这种情况下,我们可以使用一个船舶工厂类来创建不同类型的船舶对象。
以下是一个简单的船舶工厂类的示例代码:
```java
public class ShipFactory {
public static Ship createShip(String type) {
if (type.equals("ContainerShip")) {
return new ContainerShip();
} else if (type.equals("PassengerShip")) {
return new PassengerShip();
} else if (type.equals("RefrigeratedShip")) {
return new RefrigeratedShip();
} else {
return null;
}
}
}
```
在这个工厂类中,我们使用一个静态方法createShip()来创建不同类型的船舶。传递给这个方法的参数是一个字符串,表示要创建的船舶类型。如果传递的参数与可用类型匹配,则返回相应的船舶对象;否则返回null。
接下来,我们将使用NetBeans IDE创建一个图形用户界面(GUI),以便用户可以选择要生产的船舶类型。在这个GUI中,我们将使用一个组合框(JComboBox),其中包含可用的船舶类型。当用户选择一个选项时,我们将使用工厂类创建相应的船舶对象,并在GUI中显示一个图片。
以下是一个示例代码,用于创建GUI并处理用户选择:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ShipFactoryGUI extends JFrame implements ActionListener {
private JComboBox<String> shipTypeComboBox;
private JLabel shipImageLabel;
public ShipFactoryGUI() {
// 设置GUI标题和大小
super("Ship Factory");
setSize(400, 300);
// 创建船舶类型组合框(JComboBox)
String[] shipTypes = {"ContainerShip", "PassengerShip", "RefrigeratedShip"};
shipTypeComboBox = new JComboBox<>(shipTypes);
shipTypeComboBox.addActionListener(this);
// 创建显示图片的标签(JLabel)
shipImageLabel = new JLabel();
// 将组合框和标签添加到主面板(JPanel)
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(shipTypeComboBox, BorderLayout.NORTH);
mainPanel.add(shipImageLabel, BorderLayout.CENTER);
// 将主面板添加到GUI窗口
add(mainPanel);
}
@Override
public void actionPerformed(ActionEvent e) {
// 处理用户选择船舶类型的事件
String selectedType = (String) shipTypeComboBox.getSelectedItem();
Ship selectedShip = ShipFactory.createShip(selectedType);
if (selectedShip != null) {
// 如果选择的船舶类型有效,则显示相应的图片
ImageIcon image = new ImageIcon(selectedShip.getImagePath());
shipImageLabel.setIcon(image);
}
}
public static void main(String[] args) {
// 创建GUI并显示它
ShipFactoryGUI gui = new ShipFactoryGUI();
gui.setVisible(true);
}
}
```
在这个GUI中,我们创建了一个船舶类型组合框(JComboBox),并将其添加到主面板(JPanel)的顶部。然后,我们创建了一个显示图片的标签(JLabel),并将其添加到主面板的中心。每当用户选择一个船舶类型时,我们将调用船舶工厂类的createShip()方法来创建相应的船舶对象。如果对象创建成功,则将显示相应的图片。
请注意,每个船舶类型都应该有一个getImagePath()方法,该方法返回一个字符串,表示船舶图片的路径。您可以根据需要自定义这些方法。
希望这可以帮助你模拟造船厂对船舶的生产。
阅读全文