什么是结构和行为设计模式

时间:2015-07-06 18:16:17

标签: java java-ee design-patterns

我是设计模式的新手,并坚持非常基本的步骤:不同类型的设计模式。

创作模式很容易理解。

我只是想理解结构和行为设计模式的简单定义,用简单的java解释而不是各种设计模式。

注意:我在stackoverflow上读了qsns,但我不清楚答案。任何人都可以通过简单的例子用java来解释它。

2 个答案:

答案 0 :(得分:4)

行为模式用于抽象某种行为变异。最常见的行为模式之一是Strategy。 Java中策略模式的一个很好的例子是Collections.sort(List<T>, Comparator<? super T>)方法。此方法中的Comparator是用于确定列表排序方式的策略。有一个sort方法,但您可以自由传递任意​​数量的Comparator实现,这些实现可以有效地控制排序的执行方式。这是战略模式的本质。

结构模式用于将现有对象集合到一些新设计中。最常见的结构模式之一是Adapter。 Java中适配器模式的一个很好的例子是Arrays.asList()方法。此方法返回一个对象(适配器),该对象使数组看起来好像实现了List接口,从而允许您将数组传递给期望List实现的方法。

答案 1 :(得分:-1)

结构模式专注于对象之间的关系。形成结构的实体组(大致是数据结构)。 Ex:复合模式,用于获取统一操作的对象集合,请参阅java TreeNodejava.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 IteratorObserver是非常常见的行为模式。

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
}