【发布时间】:2019-01-29 17:08:31
【问题描述】:
我试图理解无状态和有状态之间的区别。
我以 Java LayoutManager 为例。通常,我不能将 BorderLayout 的实例用于多个容器。 我认为在有状态的策略中,上下文将自己作为参数传递给策略操作。这样策略就可以到达策略算法所需的所有数据。
我有一个有状态策略的代码片段。我认为这里的背景是“创建小组”,我们有不同的策略。
public class LayoutComparer extends JFrame {
private LayoutManager layout;
private String title;
public static void main(String[] args) {
JFrame f = new LayoutComparer();
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
static int counter = 0;
JPanel createPanel(LayoutManager layout, String title) {
this.layout = layout;
this.title = title;
JPanel p = new JPanel();
p.setLayout(layout);
p.add(new JButton("Click " + counter++), "West");
p.add(new JButton("Click " + counter++), "Center");
p.add(new JButton("Click " + counter++), "East");
p.setBorder(BorderFactory.createTitledBorder(title));
return p;
}
LayoutComparer() {
setTitle("Layout Manager Test");
setLayout(new GridLayout(1, 2));
LayoutManager m;
m = new java.awt.FlowLayout();
// m = new java.awt.BorderLayout();
add(createPanel(m, "Left"));
// pack();
add(createPanel(m, "Right"));
}
}
【问题讨论】:
-
你的问题是什么?
-
很抱歉给您带来了困惑。我想知道无状态策略会是什么样子。我如何实现 LayoutManager,以便不同的容器可以使用具体的策略
标签: java design-patterns strategy-pattern stateless stateful