发布网友 发布时间:2022-06-19 21:51
共1个回答
热心网友 时间:2024-11-12 02:34
1.抽象层:对实现层的上层处理或者上层调用。
2.实现层:对抽象层的处理或者调用,施以回应。具体实现抽象层的各种方法。
3.脱耦
实际上,Bridge就是通过抽象层与实现层的分离,来实现脱耦的目的的。 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(\n\n\n);
setTrailer(\n);
}
public void addLine(String line){
report += line +
\n;
}
}
public class ASCIIReporter extends Reporter{
public void addLine(String line) {
report += line + \n;
}
} 1.如果一个系统需要在构件的抽象层和实现层之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
2.设计要求实现层的任何改变不应当影响客户端,或者说实现层的改变对客户端是完全透明的。
3.一个构件有多于一个的抽象层实例和实现层实例,系统需要它们之间进行动态耦合。
4.虽然在系统中使用继承是没有问题的,但是由于抽象层和实现层需要独立变化,设计要求需要独立管理这两者。