Java模式(适配器型号)

今天阅读Java该适配器模式,这里有一个小的总结和下谈感受。对于将来使用。

首先。让我们有关适配器先说说。

适应是“来源”至“目标”适应。其中连接这两个的关系是适配器。它负责“源”过度到“目标”。

举个简单的样例,比方有一个“源”是一个对象人,他拥有2种技能各自是说日语和说英语,而某个岗位(目标)须要你同一时候回说日语、英语、和法语,好了,如今我们的任务就是要将人这个“源”适配的这个岗位中。怎样适配呢?显而易见地我们须要为人加入一个说法语的方法,这样才干满足目标的须要。

接着讨论怎样加说法语这种方法。或许你会说,为什么不直接在“源”中直接加入方法,我的理解是。适配是为了实现某种目的而为一个源类临时性的加上某种方法,所以不能破坏原类的结构。同一时候不这么做也符合Java的高内聚,低耦合的原理。既然不能直接加。接着我们就来说该怎么来实现为人这个“源”加入一个方法,而又不破坏“源”的本身结构。

适配器模式有2种,第一种是“面向类的适配器模式”,另外一种是“面向对象的适配器模式”。

先说“面向类的适配器模式”。顾名思义,这类适配器模式就是主要用于,单一的为某个类而实现适配的这样一种模式。为什么说仅仅为某个类去实现,一会提到,我们先展示这样的类适配模式的代码实现。

源的代码例如以下:

public class Person {

private String name;
private String sex;
private int age;

public void speakJapanese(){
System.out.println("I can speak Japanese!");
}

public void speakEnglish(){
System.out.println("I can speak English!");
}
...//下面省略成员变量的get和set方法
}

目标接口的代码例如以下:

public interface Job {

public abstract void speakJapanese();
public abstract void speakEnglish();
public abstract void speakFrench();

}

适配器的代码例如以下:

public class Adapter extends Person implements Job{

public void speakFrench() {

}

}

好了,代码看完然后要做一些说明了,之前遗留的一个问题,为什么称其为类适配模式呢?非常显然的,Adapter类继承了Person类。而在Java这样的单继承的语言中也就意味着,他不可能再去继承其它的类了,这样也就是这个适配器仅仅为Person这一个类服务。所以称其为类适配模式。

说完类的适配模式。我们要開始说第2种对象的适配器模式了。

对象适配器模式是把“源”作为一个对象聚合到适配器类中。

相同的话不多说,贴上代码:

源的代码以及目标代码同上,再次不再赘述。

仅贴出适配器代码:

public class Adapter implements Job {

Person person;

public Adapter(Person person) {
this.person = person;
}

public void speakEnglish() {
person.speakEnglish();
}

public void speakJapanese() {
person.speakJapanese();
}

//new add
public void speakFrench() {

}

}

对象的适配器模式,把“源”作为一个构造參数传入适配器,然后运行接口所要求的方法。这样的适配模式能够为多个源进行适配。弥补了类适配模式的不足。

如今来对2种适配模式做个分析:

1.类的适配模式用于单一源的适配,因为它的源的单一话,代码实现不用写选择逻辑,非常清晰。而对象的适配模式则可用于多源的适配,弥补了类适配模式的不足,使得原本用类适配模式须要写非常多适配器的情况不复存在。弱点是,因为源的数目能够较多。所以详细的实现条件选择分支比較多,不太清晰。

2.适配器模式主要用于几种情况:(1)系统须要使用现有的类。但现有的类不全然符合须要。(2)讲彼此没有太大关联的类引进来一起完毕某项工作(指对象适配)。

最后,再来顺带谈谈默认适配器模式:这样的模式的核心归结例如以下:当你想实现一个接口但又不想实现全部接口方法,仅仅想去实现一部分方法时。就用中默认的适配器模式,他的方法是在接口和详细实现类中加入一个抽象类。而用抽象类去空实现目标接口的全部方法。而详细的实现类仅仅须要覆盖其须要完毕的方法就可以。代码例如以下:

接口类:

public interface Job {

public abstract void speakJapanese();
public abstract void speakEnglish();
public abstract void speakFrench();
public abstract void speakChinese();

}

抽象类: public abstract class JobDefault implements Job{

public void speakChinese() {

}

public void speakEnglish() {

}

public void speakFrench() {

}

public void speakJapanese() {

}

}

实现类:

public class JobImpl extends JobDefault{

public void speakChinese(){
System.out.println("I can speak Chinese!");
}

}

好吧,。在第一个适配器模式谈到这个,我希望能够提高自己,我们有一个。

时间: 2024-10-07 16:05:59

Java模式(适配器型号)的相关文章

Java模式(适配器模式)

今天看了下Java中的适配器模式,下面就来小做下总结和谈谈感想,以便日后使用. 首先,先来先讲讲适配器.适配就是由“源”到“目标”的适配,而其中链接两者的关系就是适配器.它负责把“源”过度到“目标”.举个简单的样例,比方有一个“源”是一个对象人,他拥有2种技能各自是说日语和说英语,而某个岗位(目标)须要你同一时候回说日语.英语.和法语,好了,如今我们的任务就是要将人这个“源”适配的这个岗位中,怎样适配呢?显而易见地我们须要为人加入一个说法语的方法,这样才干满足目标的须要. 接着讨论怎样加说法语这

Java经典23结构模型的设计模式(三)------附加代理模式、适配器型号、Facade模式的差异

本文介绍了7样的结构模型中的其余2种:轻量级.代理模式. 一.享元模式FlyWeight 享元模式比較简单且重要,在非常多场合都被用到.仅仅只是封装起来了用户看不到.其概念:运用共享内存技术最大限度的支持大量细粒度的对象. 这个概念给的有些抽象,说白了就是假设内存中存在某个对象A.假设再次须要使用对象A的时候假设内存中有A这个对象就直接使用它,不要再次new了.假设没有,则又一次new一个.基于这个特点,享元模式使用时通常会给待訪问对象传递一个Tag,用来标识这个对象,并且要同一时候使用抽象工厂

java演示适配器(adapter)模式

为什么要使用模式: 模式是一种做事的一种方法,也即实现某个目标的途径,或者技术. adapter模式的宗旨就是,保留现有类所提供的服务,向客户提供接口,以满足客户的需求. 类适配器:客户端定义了接口并实现了这个接口,这个接口中的方法在自己的类库中有更好的实现方式,但是方法名不一样,不能为用户所用,可以定义一个类实现这个接口,这个接口中的方法可以委托给自己类库中的方法实现效果,以满足客户的需求.这种方式叫做接口适配. // 已存在的.具有特殊功能.但不符合我们既有的标准接口的类 class Ada

Java 实现适配器(Adapter)模式

平时我们会常常碰到这种情况,有了两个现成的类,它们之间没有什么联系.可是我们如今既想用当中一个类的方法.同一时候也想用另外一个类的方法.有一个解决方法是.改动它们各自的接口.可是这是我们最不愿意看到的.这个时候Adapter模式就会派上用场了 适配器 模式 有三种方式,一种是对象适配器,一种是类适配器, 一种是接口适配器 下面举例说明: 类适配器 类图 public class DrawRectangle {//画方 public void drawRectangle(String msg) {

Java模式(适配器模式)【转载】

转载地址: http://blog.csdn.net/elegant_shadow/article/details/5006175 今天看了下Java中的适配器模式,以下就来小做下总结和谈谈感想,以便日后使用. 首先,先来先讲讲适配器.适配就是由“源”到“目标”的适配,而当中链接两者的关系就是适配器.它负责把“源”过度到“目标”.举个简单的例子,比如有一个“源”是一个对象人,他拥有2种技能分别是说日语和说英语,而某个岗位(目标)需要你同时回说日语.英语.和法语,好了,现在我们的任务就是要将人这个

java模式及其应用场景

最经典的java 23种设计模式及具体例子(转发) 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用 设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问

Java设计模式 —— 适配器(Adapter)

# 标签: 读博客 Adapter Pattern / Wrapper Pattern 什么时候需要适配,需要包装?肯定是你给我的,现有的服务提供的不好用,我才需要给你进行一下包装再用,或者适配之后再用. Android中,数据的list能直接放到view上面么?不能吧,所以搞了个adapter适配一下,变成了一个封装类,这个封装类是可以安在view上,或者说给view提供数据源的. 你笔记本电脑需要12V的直流电,但是你家里只有220V交流电或者110V交流电,所提供的,并不是所需的,不能直接

Java模式—简单工厂模式

简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单实用的模式. 目的:为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 它的组成: 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑.在java中它往往由一个具体类实现. 2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口.在java中由接口或者抽象类来实现. 3) 具体产品角色:工厂类所创建的对象就是此角色的实例.在java中由一个具体类实现

java模式:模板模式的简单理解

1.模板模式就是用虚类作为基类将几个要执行差不多操作中相同的部分提取出来,不同的部分各自实现! 2.下面给出简单栗子: 我要进行的操作是将大象和狐狸放入冰箱,放入大象和狐狸有相同的步骤:开冰箱和关冰箱,这个操作在基类中实现就好,而不同的在于具体操作部分: 一,大象太胖了,要测量并切片才能放入冰箱 二,狐狸太臭了,要洗干净并擦干 所以程序如下: 1.基类:BasicFridgeOperation.java package com.learn.templateMode; /** * Created