Java的建造设计模式

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

分为指导者,抽象建造者,具体建造者

有一个例子

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; }

}

class MagazineBuilder extends MediaBuilder {

private Magazine m;

public void buildBase() {

System.out.println("Building magazine framework");

m = new Magazine();

}

public void addMediaItem(MediaItem article) {

System.out.println("Adding article " + article);

m.add(article);

}

public Media getFinishedMedia() { return m; }

}

class WebSiteBuilder extends MediaBuilder {

private WebSite w;

public void buildBase() {

System.out.println("Building web site framework");

w = new WebSite();

}

public void addMediaItem(MediaItem webItem) {

System.out.println("Adding web item " + webItem);

w.add(webItem);

}

public Media getFinishedMedia() { return w; }

}

//指导者角色,也叫上下文

class MediaDirector {

private MediaBuilder mb;

public MediaDirector(MediaBuilder mb) {

this.mb = mb; //具有策略模式相似特征的

}

public Media prodUCeMedia(List input) {

mb.buildBase();

for(Iterator it = input.iterator(); it.hasNext();)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航