ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java设计模式:适配器模式

2019-08-26 20:41:06  阅读:245  来源: 互联网

标签:Java readSD void SDCard public tf java 设计模式 适配器


绪论

其实很早以前就看过一些关于设计模式的文章,知道这个很重要,为此还写了一些demo,但是在实际开发过程中基本没有使用过。原因:不习惯,不记得,其实更多的是不明白什么情况下可以使用。所以导致自己的代码又臭又长,还会重复的造一些轮子,使代码看起来毫无亮点。
这次学习设计模式,更多的是分析理解,思考以往编程中哪些地方可以用到这些模式,从而可以使以后的自己在开发相同模块时可以使用。

理解

  1. 结构型模式。
  2. 主要作用:是在新接口和老接口之间进行适配。
  3. 优点:解耦、增加类的透明性和复用性、是把2个不同的东西转换到可以正常使用,适配器是去迎合目标对象与源对象。
  4. 过多使用,会让系统变得凌乱。
  5. 适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。

代码

Computer.java

public interface Computer {
	void readSD(SDCard sd);
}

LegionComputer.java

public class LegionComputer implements Computer {
	@Override
	public void readSD(SDCard sd) {
		if (sd == null) {
			throw new NullPointerException("sd card is null");
		}
		sd.readSD();
	}
}

SDCard.java

public interface SDCard {
	void readSD();
}

SDCardImpl.java

public class SDCardImpl implements SDCard {
	@Override
	public void readSD() {
		System.out.println("读SD卡:哈哈");
	}
}

TFAdapterSD.java

public class TFAdapterSD implements SDCard {
	
	private TFCard tf;
	
	public TFAdapterSD(TFCard tf) {
		this.tf = tf;
	}

	@Override
	public void readSD() {
		System.out.println("转换");
		tf.readTF();
	}
}

TFCard.java

public interface TFCard {
	void readTF();
}

TFCardImpl.java

public class TFCardImpl implements TFCard {
	@Override
	public void readTF() {
		System.out.println("读TF卡:嘿嘿");
	}
}

Main.java

public class Main {

	public static void main(String[] args) {
		Computer computer = new LegionComputer();
		SDCard sd = new SDCardImpl();
		computer.readSD(sd);
		
		TFCard tf = new TFCardImpl();
		SDCard tfToSD = new TFAdapterSD(tf);
		computer.readSD(tfToSD);
	}
}

结果

在这里插入图片描述

上面例子就是说笔记本可以直接读取SD卡,还可以通过读卡器读取TF卡。

(若有什么错误,请留言指正,3Q)

标签:Java,readSD,void,SDCard,public,tf,java,设计模式,适配器
来源: https://blog.csdn.net/qq_39237801/article/details/85259612

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有