Birdge模式

本文详细介绍了Java桥接模式的应用,通过一个具体的示例展示了如何使用桥接模式将抽象部分与其实现部分分离,使它们可以独立变化。文章首先定义了一个抽象的Display类,然后通过其子类CountDisplay实现了多次显示的功能,最后通过StringDisplayImpl类实现了具体显示逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public abstract class DisplayImpl {

	public abstract void rawOpen();

	public abstract void rawPrint() ;

	public abstract void rawClose();

}
/*
 * Display类的功能是抽象的,负责”显示一些东西“。该类位于”类功能层次结构“的最上层。
 * 在impl字段中保存的是实现了Display类的具体功能的实例(impl是implementtation(实现)的缩写
 * 该实例通过Display类的构造函数被传递给Display*/

public class Display {
 private DisplayImpl impl;
 public Display(DisplayImpl impl) {
	 this.impl=impl;
 }
 public void open() {
	 impl.rawOpen();
 }
 public void print() {
	 impl.rawPrint();
 }
 public void close() {
	 impl.rawClose();
 }
 public final void display() {
	 open();
	 print();
	 close();
 }
}
/*类的功能层次结构*/
public class CountDisplay extends Display {

	public CountDisplay(DisplayImpl impl) {
		super(impl);
		// TODO Auto-generated constructor stub
	}
	public void multiDisplay(int times) {
		open();
		for(int i=0;i<times;i++) {
			print();
		}
		close();
	}

}

public class StringDisplayImpl extends DisplayImpl {
	private String string;
	private int width;
	public StringDisplayImpl(String string) {
		this.string=string;
	}
	@Override
	public void rawOpen() {
		printLine();
		
	}

	private void printLine() {
		System.out.println("+");
		for(int i=0;i<width;i++) {
			System.out.println("-");
		}
		System.out.println("+");
		
	}
	@Override
	public void rawPrint() {
		System.out.println("|"+string+"|");
	}

	@Override
	public void rawClose() {
		printLine();
	}

}

public class Main {
public static void main(String[] args) {
	Display d1=new Display(new StringDisplayImpl("Hello China"));
	Display d2=new CountDisplay(new StringDisplayImpl("Hello,World!"));
	CountDisplay d3=new CountDisplay(new StringDisplayImpl("Hello universe"));
	d1.display();
	d2.display();
	d3.display();
	d3.multiDisplay(5);
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值