您的位置:首页 > 其它

结构类模式(一):适配器(Adapter)

2016-10-27 13:51 330 查看

定义

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

类适配器模式

使用继承的方式实现没有提供的接口从而达到适配到新系统的需求。

对象适配器模式

使用聚合的方式提供新系统需要的所有接口。

UML

public class Main
{
public static void main(String[] args)
{
//类适配器模式使用
IMSEmployeeInfo info = new MSEmployeeInfo1();
System.out.println(info.nickname());

//对象适配器模式使用
IEmployeeInfo info2 = new EmployeeInfo();
IMSEmployeeInfo info3 = new MSEmployeeInfo2(info2);
System.out.println(info3.nickname());
}

/**
* 员工信息接口
*/
public static interface IEmployeeInfo
{
/**
* 工号
*/
int id();

/**
* 姓名
*/
String name();
}

/**
* 员工信息类
*/
public static class EmployeeInfo implements IEmployeeInfo
{
@Override
public int id() {
return 250;
}

@Override
public String name() {
return "李二狗";
}
}

/**
* 需要接入的MS公司员工信息接口
*/
public static interface IMSEmployeeInfo
{
/**
* 工号
*/
int id();

/**
* MS公司不使用人物的真名, 而是给员工取了一个英文名
*/
String nickname();
}

/**
* 类适配器模式的实现
*/
public static class MSEmployeeInfo1 extends EmployeeInfo implements IMSEmployeeInfo
{
@Override
public String nickname() {
//这里通过查询得到了李二狗的英文名并返回
return "尼古拉斯";
}
}

/**
* 对象适配器模式的实现
*/
public static class MSEmployeeInfo2 implements IMSEmployeeInfo
{
private IEmployeeInfo _info;

public MSEmployeeInfo2(IEmployeeInfo info)
{
_info = info;
}

@Override
public int id() {
return _info.id();
}

@Override
public String nickname() {
//这里通过查询得到了李二狗的英文名并返回
return "尼古拉斯";
}
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: