我是设计模式的新手,并坚持非常基本的步骤:不同类型的设计模式。
创作模式很容易理解。
我只是想理解结构和行为设计模式的简单定义,用简单的java解释而不是各种设计模式。
注意:我在stackoverflow上读了qsns,但我不清楚答案。任何人都可以通过简单的例子用java来解释它。
答案 0 :(得分:4)
行为模式用于抽象某种行为变异。最常见的行为模式之一是Strategy。 Java中策略模式的一个很好的例子是Collections.sort(List<T>, Comparator<? super T>)
方法。此方法中的Comparator
是用于确定列表排序方式的策略。有一个sort
方法,但您可以自由传递任意数量的Comparator
实现,这些实现可以有效地控制排序的执行方式。这是战略模式的本质。
结构模式用于将现有对象集合到一些新设计中。最常见的结构模式之一是Adapter。 Java中适配器模式的一个很好的例子是Arrays.asList()
方法。此方法返回一个对象(适配器),该对象使数组看起来好像实现了List
接口,从而允许您将数组传递给期望List
实现的方法。
答案 1 :(得分:-1)
结构模式专注于对象之间的关系。形成结构的实体组(大致是数据结构)。 Ex:复合模式,用于获取统一操作的对象集合,请参阅java TreeNode
。 java.awt.Container
是复合模式的典型实现:通过聚合GUI对象(包含包含按钮和标签的面板的框架)获取GUI:
Container panel = new JPanel();
Container subpanel = new JPanel();
Container button = new JButton("Click me");
// the following is independent of the real nature of objects, except that they are Containers
panel.add(subpanel);
subpanel.add(button);
行为模式专注于对象之间的沟通。通信的实体组(大致是通信网络)。例如:责任链,它允许您从计算实体列表中获取计算,请参阅java Logger
。 Java Iterator
或Observer
是非常常见的行为模式。
Collection<Integer> c = ...
// The following is independent of the real nature of the collection (List, Array, etc.)
Iterator<Integer> i = c.iterator();
while (i.hasNext()) {
Integer ii = i.next();
// do something with ii
}