Adapterパターン

継承と委譲とどちらが使いやすいかですね。どちらも覚えとけと。
Javaになってからプリントデバッグする機会へったよなー

% find . -name "*.java" -print0 |xargs -0 cat                                []
package extend;

public class Banner {
	private String string;

	public Banner(String string) {
		this.string = string;
	}

	public void showWithParen() {
		System.out.println("(" + string + ")");
	}

	public void showWithAster() {
		System.out.println("*" + string + "*");
	}
}
package extend;

public class Main {

	public static void main(String[] args) {
		Print p = new PrintBanner("Hello");
		p.printWeak();
		p.printStrong();
	}

}
package extend;

public interface Print {
	public abstract void printWeak();

	public abstract void printStrong();
}
package extend;

public class PrintBanner extends Banner implements Print {

	public PrintBanner(String string) {
		super(string);
	}

	@Override
	public void printWeak() {
		showWithParen();
	}

	@Override
	public void printStrong() {
		showWithAster();
	}

}
package transfer;

import extend.Print;

public class Main {

	public static void main(String[] args) {
		Print p = new PrintBanner("Fuga");
		p.printWeak();
		p.printStrong();
	}

}
package transfer;

import extend.Banner;
import extend.Print;

public class PrintBanner implements Print {
	private Banner banner;

	public PrintBanner(String string) {
		this.banner = new Banner(string);
	}

	@Override
	public void printWeak() {
		banner.showWithParen();
	}

	@Override
	public void printStrong() {
		banner.showWithAster();
	}

}