科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件深入浅出基于Java的建造设计模式

深入浅出基于Java的建造设计模式

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

GOF给建造模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。可以将建造模式的精髓概括为:将构造复杂对象的过程和对象的部件解耦。

作者:中国IT实验室 来源:中国IT实验室 2007年8月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 三、实现
  实在找不到太好的例子,我认为《java与模式》中发邮件的例子还算可以。这里我将《Think in Patterns with Java》中的例子放到这里权且充个门面。媒体可以存在不同的表达形式,比如书籍、杂志和网络。这个例子表示不同形式的媒体构造的步骤是相似的,所以可以被提取到指导者角色中去。
  
  import java.util.*;
  import junit.framework.*;
  
  //不同的媒体形式:
  
  class Media extends ArrayList {}
  class Book extends Media {}
  class Magazine extends Media {}
  class WebSite extends Media {}
  
  // 进而不含不同的媒体组成元素:
  
  class MediaItem {
  private String s;
  public MediaItem(String s) { this.s = s; }
  public String toString() { return s; }
  }
  
  class Chapter extends MediaItem {
  public Chapter(String s) { super(s); }
  }
  
  class Article extends MediaItem {
  public Article(String s) { super(s); }
  }
  
  class WebItem extends MediaItem {
  public WebItem(String s) { super(s); }
  }
  
  // 抽象建造者角色,它规范了所有媒体建造的步骤:
  
  class MediaBuilder {
  public void buildBase() {}
  public void addMediaItem(MediaItem item) {}
  public Media getFinishedMedia() { return null; }
  }
  
  //具体建造者角色
  
  class BookBuilder extends MediaBuilder {
  private Book b;
  public void buildBase() {
  System.out.println("Building book framework");
  b = new Book();
  }
  
  public void addMediaItem(MediaItem chapter) {
  System.out.println("Adding chapter " + chapter);
  b.add(chapter);
  }
  public Media getFinishedMedia() { return b; }
  }
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章