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

来源:互联网 发布:软件脱壳是什么意思 编辑:程序博客网 时间:2024/05/22 03:24

解决问题类型

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


解决设计思路

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


具体待解决的问题

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


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

对象适配器:

与类适配器模式相比,要想置换适配者类的方法就不容易。


0 0
原创粉丝点击