您的位置:首页 > 其它

软件体系结构--适配器模式

2014-06-19 16:11 281 查看

解决问题类型

为了解决接口不一致的问题


解决设计思路

在两个软件模块之间设计一个适配器进行适配,包括类适配器和对象适配器两种方案


具体待解决的问题

要使用一个类中的对数组升序排序的方法,同时也要使用另一个类中对数组进行降序排序的方法


UML设计

类适配器



对象适配器



核心代码

类适配器

public class ClassAdapter extends SortAdaptee implements SortTarget {
@Override
public void descending(int[] datas) {
// TODO 自动生成的方法存根
for(int i=0;i<datas.length-1;i++){
for(int j = 0;j<=datas.length-i-2;j++){
if(datas[j]<datas[j+1]){
int temp = datas[j];
datas[j] = datas[j+1];
datas[j+1] = temp;
}}}}}

对象适配器

public class ObjectAdapter implements SortTarget {
private Sort adaptee = new Sort();
public void ascending(int[] datas) {
// TODO 自动生成的方法存根
adaptee.ascending(datas);
}
public void descending(int[] datas) {
// TODO 自动生成的方法存根
for(int i=0;i<datas.length-1;i++){
for(int j = 0;j<=datas.length-i-2;j++){
if(datas[j]<datas[j+1]){
int temp = datas[j];
datas[j] = datas[j+1];
datas[j+1] = temp;
}}}}}


模式的优点

适配器模式将接口不同而功能相近的两个接口加以转换,包括适配器适配器角色补充一些源角色没有但目标接口需要的方法,灵活性和扩展性都很好,符合开闭原则。


模式的不足

类适配器:

对于Java等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。

对象适配器:

与类适配器模式相比,要想置换适配者类的方法就不容易。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: