实例代码|说明|类图,将这些结合起来理解!
设计模式(行为)——组合模式
可能有一群鸭子,都实现的接口Quackable,这里用组合模式,管理他们的动作。这就符合部分和整体的要求。
public class Flock implements Quackable {
ArrayList quackers = new ArrayList();
public void add(Quackable quacker) {
quackers.add(quacker);
}
public void quack() {
# 这里用到了迭代器模式
Iterator iterator = quackers.iterator();
while (iterator.hasNext()) {
Quackable quacker = (Quackable)iterator.next();
quacker.quack();
}
}
public String toString() {
return "Flock of Quackers";
}
}
# 这里使用Flock(集合类),这里要注意叶子节点和组合,ADD集合的时候,这里用到了递归调用
public class DuckSimulator {
public static void main(String[] args) {
DuckSimulator simulator = new DuckSimulator();
AbstractDuckFactory duckFactory = new CountingDuckFactory();
simulator.simulate(duckFactory);
}
void simulate(AbstractDuckFactory duckFactory) {
Quackable redheadDuck = duckFactory.createRedheadDuck();
Quackable duckCall = duckFactory.createDuckCall();
Quackable rubberDuck = duckFactory.createRubberDuck();
Quackable gooseDuck = new GooseAdapter(new Goose());
System.out.println("\nDuck Simulator: With Composite - Flocks");
Flock flockOfDucks = new Flock();
flockOfDucks.add(redheadDuck);
flockOfDucks.add(duckCall);
flockOfDucks.add(rubberDuck);
flockOfDucks.add(gooseDuck);
Flock flockOfMallards = new Flock();
Quackable mallardOne = duckFactory.createMallardDuck();
Quackable mallardTwo = duckFactory.createMallardDuck();
Quackable mallardThree = duckFactory.createMallardDuck();
Quackable mallardFour = duckFactory.createMallardDuck();
flockOfMallards.add(mallardOne);
flockOfMallards.add(mallardTwo);
flockOfMallards.add(mallardThree);
flockOfMallards.add(mallardFour);
flockOfDucks.add(flockOfMallards);
System.out.println("\nDuck Simulator: Whole Flock Simulation");
simulate(flockOfDucks);
System.out.println("\nDuck Simulator: Mallard Flock Simulation");
simulate(flockOfMallards);
System.out.println("\nThe ducks quacked " +
QuackCounter.getQuacks() +
" times");
}
void simulate(Quackable duck) {
duck.quack();
}
}
名称 |
Composite
|
结构 |
|
意图 |
将对象组合成树形结构以表示“部分-整体”的层次结构。C o m p o s i t e
使得用户对单个对象和组合对象的使用具有一致性。 |
适用性 |
- 你想表示对象的部分-整体层次结构。
- 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
|
设计模式(行为)——迭代器模式
设计原则:一个类应该只有一个引用变量的原因。
名称 |
Iterator
|
结构 |
|
意图 |
提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 |
适用性 |
- 访问一个聚合对象的内容而无需暴露它的内部表示。
- 支持对聚合对象的多种遍历。
- 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。
|
- 大小: 14.8 KB
- 大小: 7 KB
分享到:
相关推荐
5.4 ITERATOR(迭代器)—对象行为型 模式 171 5.5 MEDIATOR(中介者)—对象行为型 模式 181 5.6 MEMENTO(备忘录)—对象行为型 模式 188 5.7 OBSERVER(观察者)—对象行为型 模式 194 5.8 STATE(状态)—对象...
包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...
10. Iterator模式,迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 11. Interpreter模式,解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释...
这本书的核心理念是将实践中证明有效的解决方案——设计模式——以规范化的形式呈现出来,供开发者在遇到类似问题时参考和借鉴。设计模式是软件开发中的一种通用语言,它们代表了在特定情境下解决特定问题的最佳实践...
#### 第9章:良好的集合管理——迭代器模式和组合模式 迭代器模式提供了一种方法来顺序访问聚合对象中的一系列数据,而不暴露其内部表示。组合模式则将对象组织到树形结构中以表示部分整体层次结构,使得客户端可以...
- **行为型模式**:关注对象间的职责分配,例如策略模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、状态模式、访问者模式和解释器模式。 #### 设计模式的价值 设计模式之所以重要,是因为它们...
Vlissides)经典设计模式,包括创建型模式(如单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式)、结构型模式(如适配器模式、桥接模式、装饰器模式、组合模式、外观模式、享元模式和代理模式)以及行为型...
这本书通过故事的方式解释了23种经典的GOF(Gang of Four)设计模式,包括创建型模式(如单例、工厂方法、抽象工厂、建造者、原型),结构型模式(如代理、装饰器、适配器、桥接、组合、外观、享元),以及行为型...
- **邀请加入设计模式社区**:鼓励读者参与设计模式的研究和讨论。 - **结束语**:强调设计模式的重要性,并展望未来的发展趋势。 #### 九、术语表与指南 **术语表与指南:** 本书还提供了详细的术语表和指南,...
定义迭代器模式的基本结构和目的。 - **20.3 迭代器模式的应用** 展示迭代器模式在实际项目中的应用场景。 - **20.4 最佳实践** 提供在实际开发中如何有效运用迭代器模式的建议。 **第21章 组合模式** - **...
### 设计模式精解——GoF 23种设计模式解析 #### 0. 引言 设计模式作为面向对象编程的重要组成部分,在软件工程领域扮演着至关重要的角色。本文档旨在通过对GoF(Gang of Four)提出的23种设计模式进行深度解析,...
- **模式定义**:迭代器模式是一种行为型设计模式,它提供一种方法来顺序访问集合对象中包含的各个元素,而又不暴露该对象的内部表示。 17. **MEDIATOR** - **场景解析**:在组织聚会时,如果需要协调各种活动...
为了帮助 .NET 开发者更好地理解和应用这些设计模式,《Head First 设计模式》为 .NET 2.0 特别推出了一个配套文档——《设计模式框架》(Design Pattern FrameworkTM),该文档涵盖了原书中介绍的所有设计模式,并...
- **迭代器模式**:讨论迭代器模式的使用场景和实现方法。 #### 六、综合应用与思考 - **案例研究**:书中通过具体的案例研究,展示了如何将上述设计模式和其他设计理念结合起来,以应对复杂的软件设计挑战。 - **...
迭代器模式提供了一种方法来访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 ##### 3.6 适配器模式 适配器模式将一个类的接口转换成客户希望的另一个接口。适配器让原本由于接口不兼容而不能一起...
- **行为型模式**:包括策略模式、模板方法模式、观察者模式、迭代器模式、访问者模式、命令模式、备忘录模式、状态模式、解释器模式等。这些模式侧重于对象间的交互方式。 #### 五、结语 《Head First Design ...