Java设计模式之适配器模式

来源:互联网 发布:央视直播网络电视 编辑:程序博客网 时间:2024/05/16 06:49

Java设计模式之适配器模式

我们喜欢说“俗话说得好”,俗话是古代人们对一些有规律的事物进行的总结,是智慧的结晶,那么我认为java设计模式是java中智慧的结晶,是java语言成熟到一定程度产生的具有高度结构性,适用性,灵活性的总结。今天学习了java设计模式中的适配器模式,进行个总结。
适配器模式(adapter),目的是为了在不改变现有的需求(或者说是代码不允许修改的情况下),通过适配器的方式来将当前的实现功能和原来的需求接口相适配。主要分为两种,类适配器和对象适配器。
类适配器是指原有功能暴露出来的是一个接口,而现有的类实现了其功能但是并没有继承原有接口,想想这个时候该怎么办,用适配器模式再合适不过了,这个时候我们只需要个创建个类,让这个类继承现有的类,并且实现原有暴露出来的那个接口,这样就可以在其内部来适配了。举个例子:原有功能暴露出的是个接口A,有个old()方法。而你现在有个B类,里面有个now()方法,now方法里就是可以满足old方法的实现,但是由于B类没有实现A接口,所以不能直接使用。那根据上面我们说的,我们应该怎么办呢。这个时候我们只需要创建一个C类,让C继承B类,并且实现A接口,这样C就需要实现A的old()方法,在old()方法里调用now()方法,搞定!。
对象适配器和类适配器类似,不同的是,原有功能暴露出来的可能不是个接口,而是抽象类。考虑一下,这个时候再用上述类适配器可能行不通了,因为类具有单一继承性,如果我们继承了现有类,就无法再去继承原有功能暴露出来的抽象类了。那我们该怎么办呢。这个时候就需要考虑对象适配器了。对象适配器是指将对象封装进适配器。举个例子,比如上述的例子,假设A接口不再是接口,而是个抽象类A。想想该怎么做。首先我们应该明白,肯定是要继承A的,不然是不能符合原有功能的。但我们如果继承了A,就无法再继承现有类B了,不怕,我们可以在我们的C类的构造函数中传进来一个B,以此让C可以持有一个B的引用实例b。这样我们在C的old()方法(继承自A)里就可以调用实例b.new()方法,来达到我们的目的了。到此我们就达到了我们的目的。
顺便再说个适配器模式的用途,比如我们有一个接口A,里面有很多的方法,如果我们需要实现此接口,那就需要重写其所有的方法。但是如果我们事先创建个类B,来实现此接口,然后实现所以的抽象方法,但都是空实现。那么当我们需要实现此接口的时候,我们只需要继承B,然后只需重写我们需要的方法,其他的方法我们却可以置之不理,岂不是很美?
到此,java适配器模式就结束了,这是菜鸟我第一次写博客,由于没有经验,加上之前也没有对MarkDown编辑器很熟悉,所以打了半天字。看别的大神都是通过部分简单的代码来讲解的,通俗易懂。我的出发点其实并不是为了让别人看的,只是自己想简单的记录下来,这样以后忘记的时候就可以翻看。但是又担心有的人会看到,怕不明白,故留言在此。同时我又是做android开发的,我知道开源的乐趣,所以还是希望能给予看到的同学一点点帮助,以后会学着写的好一些,不多说了,奋斗在路上的年轻人,一起加油。

1 0
原创粉丝点击