adapter java_Java 实现适配器(Adapter)模式
平時(shí)我們會(huì)常常碰到這種情況,有了兩個(gè)現(xiàn)成的類,它們之間沒有什么聯(lián)系。可是我們?nèi)缃窦认胗卯?dāng)中一個(gè)類的方法。同一時(shí)候也想用另外一個(gè)類的方法。有一個(gè)解決方法是。改動(dòng)它們各自的接口。可是這是我們最不愿意看到的。這個(gè)時(shí)候Adapter模式就會(huì)派上用場(chǎng)了
適配器 模式?有三種方式,一種是對(duì)象適配器,一種是類適配器, 一種是接口適配器
下面舉例說明:
類適配器 類圖
public class DrawRectangle {//畫方
public void drawRectangle(String msg) {
System.out.println("draw Rectangle: " + msg);
}
}
public interface IDrawCircle {//畫圓的接口
void drawCircle();
}
/**
* 類適配器 使用對(duì)象繼承的方式,是靜態(tài)的定義方式
* @author stone
*
*/
public class DrawAdapter4Class extends DrawRectangle implements IDrawCircle {//既能畫方又能畫圓
@Override
public void drawCircle() {
System.out.println("DrawAdapter4Class: drawCircle");
}
}
對(duì)象適配器類圖:
/**
* 對(duì)象適配器: 使用對(duì)象組合的方式,是動(dòng)態(tài)組合的方式。
* 既能畫方又能畫圓
* @author stone
* DrawAdapter是適配器,DrawRectangle屬于adapter,是被適配者,適配器將被適配者和適配目標(biāo)(DrawCircle)進(jìn)行適配
*
*/
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);
}
}
接口適配器
類圖
/*
* 接口適配器:接口中有抽象方法,我們僅僅想實(shí)現(xiàn)當(dāng)中的幾個(gè)。不想所有實(shí)現(xiàn),
* 所以提供一個(gè)默認(rèn)空實(shí)現(xiàn),然后繼承自它,重寫實(shí)現(xiàn)我們想實(shí)現(xiàn)的方法
*/
public interface IDraw {
void drawCircle();
void drawRectangle();
}
/*
* 接口適配器 的默認(rèn)實(shí)現(xiàn)
*/
public class DefaultDrawAdapter implements IDraw {//畫方 畫圓 皆為空實(shí)現(xiàn)
@Override
public void drawCircle() {
}
@Override
public void drawRectangle() {
}
}
public class Test {
public static void main(String[] args) {
//對(duì)象適配器
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
總結(jié)
以上是生活随笔為你收集整理的adapter java_Java 实现适配器(Adapter)模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瑞星个人防火墙万能序列号ID号
- 下一篇: Java学习资料整合