《图解设计模式》 第一部分 适应设计模式

第一章 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();
  }
}

什么时候是和适配器模式?

当我们拥有一个现有的类,它经过长时间的考验 问题不多,不需要舍弃,而且希望减少改动就能使用的时候。这个是和就是和用适配器模式了。

posted @ 2024-11-04 16:49  大俗XD  阅读(2)  评论(0编辑  收藏  举报
//雪花飘落效果