adapter java_Java 实现适配器(Adapter)模式
平時我們會常常碰到這種情況,有了兩個現成的類,它們之間沒有什么聯系。可是我們如今既想用當中一個類的方法。同一時候也想用另外一個類的方法。有一個解決方法是。改動它們各自的接口。可是這是我們最不愿意看到的。這個時候Adapter模式就會派上用場了
適配器 模式?有三種方式,一種是對象適配器,一種是類適配器, 一種是接口適配器
下面舉例說明:
類適配器 類圖
public class DrawRectangle {//畫方
public void drawRectangle(String msg) {
System.out.println("draw Rectangle: " + msg);
}
}
public interface IDrawCircle {//畫圓的接口
void drawCircle();
}
/**
* 類適配器 使用對象繼承的方式,是靜態的定義方式
* @author stone
*
*/
public class DrawAdapter4Class extends DrawRectangle implements IDrawCircle {//既能畫方又能畫圓
@Override
public void drawCircle() {
System.out.println("DrawAdapter4Class: drawCircle");
}
}
對象適配器類圖:
/**
* 對象適配器: 使用對象組合的方式,是動態組合的方式。
* 既能畫方又能畫圓
* @author stone
* DrawAdapter是適配器,DrawRectangle屬于adapter,是被適配者,適配器將被適配者和適配目標(DrawCircle)進行適配
*
*/
public class DrawAdapter4Object implements IDrawCircle {//既能畫方又能畫圓
private DrawRectangle drawRectangle;
public DrawAdapter4Object(DrawRectangle drawRectangle) {
this.drawRectangle = drawRectangle;
}
@Override
public void drawCircle() {
System.out.println("DrawAdapter4Object: drawcircle");
}
public void drawRectangle(String msg) {
drawRectangle.drawRectangle(msg);
}
}
接口適配器
類圖
/*
* 接口適配器:接口中有抽象方法,我們僅僅想實現當中的幾個。不想所有實現,
* 所以提供一個默認空實現,然后繼承自它,重寫實現我們想實現的方法
*/
public interface IDraw {
void drawCircle();
void drawRectangle();
}
/*
* 接口適配器 的默認實現
*/
public class DefaultDrawAdapter implements IDraw {//畫方 畫圓 皆為空實現
@Override
public void drawCircle() {
}
@Override
public void drawRectangle() {
}
}
public class Test {
public static void main(String[] args) {
//對象適配器
DrawAdapter4Object objAdapter = new DrawAdapter4Object(new DrawRectangle());
objAdapter.drawCircle();
objAdapter.drawRectangle(" in DrawAdapter4Object");
System.out.println("--------------");
//類適配器
DrawAdapter4Class clzAdapter = new DrawAdapter4Class();
clzAdapter.drawCircle();
clzAdapter.drawRectangle("in DrawAdapter4Class");
System.out.println("--------------");
//接口適配器
MyDrawAdapter myDrawAdapter = new MyDrawAdapter();
myDrawAdapter.drawCircle();
myDrawAdapter.drawRectangle();
}
static class MyDrawAdapter extends DefaultDrawAdapter {
@Override
public void drawCircle() {
System.out.println("drawCircle in MyDrawAdapter");
}
}
}
打印
DrawAdapter4Object: drawcircle
draw Rectangle: in DrawAdapter4Object
--------------
DrawAdapter4Class: drawCircle
draw Rectangle: in DrawAdapter4Class
--------------
drawCircle in MyDrawAdapter
總結
以上是生活随笔為你收集整理的adapter java_Java 实现适配器(Adapter)模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瑞星个人防火墙万能序列号ID号
- 下一篇: Java学习资料整合