设计模式-适配器模式

来源:互联网 发布:名片上董事长英文 知乎 编辑:程序博客网 时间:2024/06/07 01:20

1、       UML设计图

(1)   类适配器UML 

(2)对象适配器UML


2、       核心实现代码

对象适配器类: 采用继承,将Adaptee类转化到增加了新功能的Target接口。

public class ClassApater extends Adapteeimplements Target { //类适配器,继承Adaptee,实现接口

 

   

    public voidsortInt(int[]a)

    {  double [] b=newdouble[a.length];

   

    for (inti = 0; i < a.length;i++)

        b[i]=(double)a[i];      //首先转化成Double类型,实现父类方法调用

   

          sortDouble(b);     //调用继承父类的sortDouble方法

          for(inti = 0; i < a.length;i++)

            a[i]=(int)b[i];    //转化成原来类型

    }

}

 

对象适配器:采用调用的方法,将Adaptee类转化到增加了新功能的Target接口。

public class ObjectApater implements Target{

       

Adapteeadaptee=new Adaptee();      //实例化Adapter对象,调用Adapter方法

   

public void sortInt(int[] a)  

 

{

    double[] b =newdouble[a.length]; 

    for (int i = 0; i < a.length; i++)  

         b[i] = (double) a[i];  //进行类型转换  ,编程double类型

           sortDouble(b);        //调用adapter排序方法

   for (inti = 0; i < a.length;i++)

    a[i] = (int) b[i];        //排序过后再次转回原来类型

}

 

@Override

public void sortDouble(double[] a) {

    // TODO Auto-generated methodstub

     this.adaptee.sortDouble(a);

}  

}

 

对象适配器的按钮事件:

    button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

               

        try {

    String [] str=textField.getText().split(",");//将字符串存储到字符串数组

                    int [] array=newint[str.length];      

                for (int i = 0; i < str.length;i++)

                array[i]=Integer.parseInt(str[i]);//转化文本框的字符为整数   

            Target tg=new ObjectApater();//实例化对象适配器

                    tg.sortInt(array);  //排序

                    String s1="";

                    for (int i = 0; i < array.length;i++) {

            s1+=String.valueOf(array[i])+",";//S1是输出排序后结果的字符串

                    }

                    textArea.setText(s1);              

                } catch (Exception e2) {  //异常处理

                       e2.printStackTrace();

                     JOptionPane.showMessageDialog(null, e2.getMessage());

                    // TODO: handle exception

                }          

            }

        });


心得体会

这次的适配器模式,难度不大,主要是理解每个类的作用:Target:即所期望的Java接口。

Adaptee:被继承的Java接口,dapter:将Adaptee类转化到增加了新功能的Target接口。并且要区分清楚类配器是继承,而对象适配器是调用,对象适配器模式可以帮许多种不同的源类都适配到同一个接口,而类适配器做不到这一点。

    学习到现在,其实发觉软件体系结构这门课是非常具实用性的。以前编程对于类的定义是非常混乱的,并没有做好分类和架构的设置。而通过软件体系结构这门课的学习,代码格式比以前规范了不少。而且学习到至今的结构模式都是很基础,很实用。今后我会继续努力学习,学好编程。老师每周都更新实验书说明,并且非常详细,辛苦了。


0 0
原创粉丝点击