从Java类库看设计模式(3) - 编程入门网
别实现HTML格式和ASCII 格式的报告。在Report层次下面,有具体的一个StockListReport子类,用来表示货物清单报 告。
public abstract class Report { Reporter reporter; public Report(Reporter reporter) { this.reporter = reporter; } //抽象类使用桥接对象的方法来实现一个任务 public void addReportItem(Object item){ reporter.addLine(item.toString()); } public void addReportItems(List items){ Iterator iterator = items.iterator(); while ( iterator.hasNext() ) { reporter.addLine(iterator.next().toString()); } } public String report(){ return reporter.getReport(); } } public class StockListReport extends Report{ ArrayList stock=new ArrayList(); public StockListReport(Reporter reporter){ super(reporter); } public void addStockItem(StockItem stockItem){ stock.add(stockItem); addReportItem(stockItem); } } //实现层次的抽象父类定义原子方法,供抽象层次的类调用 public abstract class Reporter{ String header = ""; String trailer = ""; String report = ""; public abstract void addLine(String line); public void setHeader(String header){ this.header = header; } public void setTrailer(String trailer){ this.trailer = trailer; } public String getReport(){ return header+report+trailer; } } public class HTMLReporter extends Reporter{ public HTMLReporter(){ setHeader("<HTML>\n<HEAD></HEAD>\n<BODY>\n"); setTrailer("</BODY>\n</HTML>"); } public void addLine(String line){ report += line + "<BR>\n"; } } public class ASCIIReporter extends Reporter{ public void addLine(String line) { report += line + "\n"; } } 实际上,Bridge模式是一个很强大的模式,可以应用在很多方面。其基本思想:分离抽象 和实现,是设计模式的基础之一。正如GOF所提到的:"找到变化的部分,并将其封装起来"; "更多的考虑用对象组合机制,而不是用对象继承机制"。Bridge模式很好的体现了这几点。 从Java类库看设计模式(3)(3)时间:2011-04-23 IBM 刘武东Decorator模式 在使用Java中的IO类库的时候,是不是快要被它那些功能相似,却又绝对可称得上庞杂的 类搞得要发疯了?或许你很不明白为什么要做这么多功能相似的几十个类出来,这就是 Decorator模式将要告诉你的了。 在IO处理中,Java将数据抽象为流(Stream)。在IO库中,最基本的是InputStream和 OutputStream两个分别处理输出和输入的对象(为了叙述简便起见,这儿只涉及字节流,字 符流和其完全相似),但是在InputStream和OutputStream中之提供了最简单的流处理方法, 只能读入/写出字符,没有缓冲处理,无法处理文件,等等。它们只是提供了最纯粹的抽象, 最简单的功能。 如何来添加功能,以处理更为复杂的事情呢?你可能会想到用继承。不错,继承确实可以 解决问题,但是继承也带来更大的问题,它对每一个功能,都需要一个子类来实现。比如, 我先实现了三个子类,分别用来处理文件,缓冲,和读入/写出数据,但是,如果我需要一个 既能处理文件,又具有 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |