《图解设计模式》 第一部分 适应设计模式
第一章 Iterator模式 -- 一个一个遍历
为什么要使用 Iterator模式?
正常遍历我们使用 for 循环即可,为什么要在集合引入 Iterator 这个角色呢?
eg
while(it.hasNext()){
Book book = (Book) it.next();
System.out.println(book.getName());
}
这里的 while 循环并不依赖于 BookShelf 的实现。
关键就是为了 在开发者优化 BookShelf 的时候,可以不修改其他地方的代码。
就比如是这个 while 循环。
若没有 实现 Iterator ,直接使用内部数组,遇到优化BookShelf的情况(比如更换为 Vector,或者其他集合),
就需要花费经历去改动 许多位置的代码。
第二章 Adapter模式 -- 价格 "适配器" 以便复用
示例程序1 (使用 继承 的适配器)
public class printBanner extends Banner implements Print{
public PrintBanner(String string){
super(string);
}
public void printWeak(){
showWithParent();
}
public void printStrong(){
showWithAster();
}
}
printBanner 就像一个转换器一样,将 Print的接口方法转换为 Banner的方法。
示例程序2 (使用 委托 的适配器)
public class PrintBanner extends Print(){
private Banner banner;
publci PrintBanner(String string){
this.banner = new Banner(string);
}
public void printWeak(){
banner.showWithParen();
}
public void printStrong(){
banner.showWithAster();
}
}
什么时候是和适配器模式?
当我们拥有一个现有的类,它经过长时间的考验 问题不多,不需要舍弃,而且希望减少改动就能使用的时候。这个是和就是和用适配器模式了。