博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
适配器模式(默认适配器)
阅读量:4499 次
发布时间:2019-06-08

本文共 3290 字,大约阅读时间需要 10 分钟。

java设计模式大体分为23种设计模式,直接通过例子学习设计模式,更易于理解和思考其中的原理和作用,以下给出 适配器模式 的第二种(一个有三种)的demo,叫做默认适配器模式:

MainRun.java类,是程序运行入口,含有main方法。大伙认真的看main方法上面的注释喔,是博主对此模式的总结和分析。(附 advantage是表示使用此模式的优势,disadvantage是此模式的不足和缺点,use scene是表示此模式的使用场景。)

package cn.cat.design.mode.adaptor.defaults;public class MainRun {	/**适配器模式(默认适配器):与类适配器和对象适配器不同,默认适配器的目的是在于简化使用者对目标接口(抽象类)的实现						  使用者只需要重载需要使用到的方法即可。	 * 	 * advantage: 简化了目标接口(抽象类)的实现。	 * 				 * disadvantage:因为默认适配器是类,使用者必须要继承此类,导致使用者不能再继承其他的类,使扩展受限。	 * 	 * use scene:目标接口的方法比较多,而使用者仅使用了其中一部分方法。	 * 	 * @param args	 */	public static void main(String[] args) {		//A公司翻译者。会说中文和英语。		TranslationJob aTranslator = new ACompanyTranslator();		aTranslator.speakChinese();		aTranslator.speakEnglish();				//B公司翻译者。会说德语、法语和日语。		TranslationJob bTranslator = new BCompanyTranslator();		bTranslator.speakGerman();		bTranslator.speakFrench();		bTranslator.speakJapanese();			}}

TranslationJob.java

package cn.cat.design.mode.adaptor.defaults;/** * 翻译工作的要求 接口 * @author Cat(gwj) *  date 2015-9-7 *  time 下午8:45:51 */public interface TranslationJob {	/**说中文	 * 	 */	public void speakChinese ();	/**说日语	 * 	 */	public void speakJapanese();	/**说法语	 * 	 */	public void speakFrench();	/**说德语	 * 	 */	public void speakGerman();	/**说英语	 * 	 */	public void speakEnglish();}

DefaultTranslationJob.java

package cn.cat.design.mode.adaptor.defaults;/**此方法实现TranslationJob接口,但是所有方法都只是空实现, * 目的是让目标类直接继承此类,只需要实现部分使用到的方法即可, * 而不用去实现TranslationJob接口,导致需要实现所有的接口方法。
* ps:如果担心使用者没有重置默认方法,就进行使用,则可以让默认方法抛出一个运行时异常。 * @author Cat(gwj) * date 2015-9-7 * time 下午9:01:14 */public class DefaultTranslationJob implements TranslationJob{ @Override public void speakChinese() { // TODO Auto-generated method stub } @Override public void speakJapanese() { // TODO Auto-generated method stub } @Override public void speakFrench() { // TODO Auto-generated method stub } @Override public void speakGerman() { // TODO Auto-generated method stub } @Override public void speakEnglish() { // TODO Auto-generated method stub }}

ACompanyTranslator.java

package cn.cat.design.mode.adaptor.defaults;/**A公司的翻译者。 * 要求会说中文和英语,因此只需要重载中文speakChinese()和英语speakEnglish()方法,其余使用默认的方法即可。 * @author Cat(gwj) *  date 2015-9-7 *  time 下午9:08:45 */public class ACompanyTranslator extends DefaultTranslationJob {	@Override	public void speakChinese() {		//进行业务逻辑操作		System.out.println("ACompanyTranslator.speakChinese");	}	@Override	public void speakEnglish() {		//进行业务逻辑操作		System.out.println("ACompanyTranslator.speakEnglish");	}}

BCompanyTranslator.java

package cn.cat.design.mode.adaptor.defaults;/**B公司的翻译者。 * 要求会说法语、日语和德语,因此只需要重载speakFrench()、speakJapanese()和speakGerman()方法,其余使用默认的方法即可。 * @author Cat(gwj) *  date 2015-9-7 *  time 下午9:08:45 */public class BCompanyTranslator extends DefaultTranslationJob {	@Override	public void speakFrench() {		//进行业务逻辑操作		System.out.println("BCompanyTranslator.speakFrench");	}	@Override	public void speakJapanese() {		//进行业务逻辑操作		System.out.println("BCompanyTranslator.speakJapanese");	}	@Override	public void speakGerman() {		//进行业务逻辑操作		System.out.println("BCompanyTranslator.speakGerman");	}}

------------------------------------------------------------demo end---------------------------------------------------------

转载于:https://www.cnblogs.com/catgwj/p/7604866.html

你可能感兴趣的文章
python--异常处理
查看>>
MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1
查看>>
数论只会GCD。。。
查看>>
UVA 12506 Shortest Names
查看>>
利用 jQuery 来验证密码两次输入是否相同
查看>>
WIN7用户登录背景修改方法
查看>>
[转]HTTP请求行、请求头、请求体详解
查看>>
java基础之 超类Object
查看>>
C#中用webBrowser控件实现对Google地图的定位访问
查看>>
2016级算法期末上机-C.简单·Bamboo's Fight with DDLs III
查看>>
Android学习笔记之线程中调用UI控件
查看>>
maven:新建的maven工程需要添加一下插件
查看>>
Centos6.5下进行PHP版本升级
查看>>
An internal error occurred during: "Generating JAX-WS Web Services".Unable to create JAXBContext
查看>>
计算思维Computational Thinking
查看>>
将两个有序链表合并为一个新链表
查看>>
Map接口
查看>>
HDU 1556 Color the ball【差分数组裸题/模板】
查看>>
Codeforces Round #416 (Div. 2) A. Vladik and Courtesy【思维/模拟】
查看>>
Node.js + Express 多个 Layout 文件应用
查看>>