继上篇策略模式,可以引出一个叫做适配器模式的设计模式
先看下面的代码,还是上篇策略模式的代码段
interface Process{
public void process(File file);
}
public class Test{
public static void walkDir(Process p,File file){
File[] files = file.listFiles();
for(File ff : files){
if(ff.isDirectory()){
walkDir(p,ff);
}
p.process(ff);
}
}
public static void main(String[] args){
Process p1 = new Process(){
public void process(File file){
System.out.println(ff.getAbsolutePath());
}
};
Process p2 = new Process(){
public void process(File file){
private count = 0;
String path = file.getAbsolutePath();
int index = path.lastIndexOf("\\");
String str = path.substring(0,index);
file.renameTo(new File(str+ "/" + count));
count++;
}
};
walkDir(p1,new File("E:/abc"));
}
}
在给walkDir()传的第一个参数(p1、p2…),都我们自己定义的类
那如果是这个类不是我们自己定义的,而是发现的,比如系统内置的java.util.Date类呢,它并没有实现Process接口,也不可能实现这个接口
因为系统内置的类我们改不了,我们手里只有系统生成好的可怜的class文件
肿么办??现在我非要传个Date类进去,这个时候,适配器就可以解决这个问题
看下面的代码:
class DateAdapter implements Process{
private Date date;
public DateAdapter(Date date){
this.date = date;
}
public void process(File file){
System.out.println(file.getName() + ":" +date.getDate());
}
}
OK,现在做出了一个DateAdapter,把Date传进去,实现Process接口,所以现在处理过程中还可以用Date去处理,这就叫适配,这样一适配,任何类都可以去处理文件了
现在这样给walkDir()传参数:
walkDir(new DateAdapter(new Date()),new File("E:/abc"));
总结一下,如果一个类是你发现的,而发现的类自己又改不了,自定义的类才能改,这个时候去用发现的类去处理相关的过程,就用到了适配器模式
个人浅谈,有误地方,多多指教
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
在《设计模式浅谈24种》中,主要讨论了24种经典的GOF设计模式,这些模式被分为三大类:创建型、结构型和行为型。 创建型模式主要关注对象的创建,包括以下几个核心模式: 1. **Abstract Factory**(抽象工厂)模式...
本篇将深入探讨12种核心的设计模式,它们是:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、桥接模式、组合模式、享元模式和观察者模式。 1. **单例模式**:确保一...
- 适配器模式:将两个不兼容的接口转换为可以互相操作的接口。 - 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式:允许你将对象组合成树形结构,可以以统一的方式处理单个对象和组合对象...
2. **结构型模式**:包括适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)、组合(Composite)、外观(Facade)和享元(Flyweight)。这些模式关注于如何将类和对象组合在一起,以形成更大的...
在IT行业中,设计模式是一种被广泛认可的解决特定问题或实现特定功能的模板,它在软件工程...通过阅读"嵌入式系统架构浅谈_编程设计模式 (一)---访问硬件的设计模式.html"这篇文章,你可以深入了解这些模式的实践应用。
(4)适配器模式:允许两个不兼容的接口协同工作,常用于连接不同的组件或者库。 (5)MVC(Model-View-Controller)模式:将业务逻辑、数据模型和用户界面分离,提高代码的组织性和可测试性。 4. 结合案例分析 ...
8. **适配器模式**: 适配器模式使两个不兼容的接口能够协同工作。C#中的`Adapter`类或接口可以作为适配器,将旧的或第三方库的接口转换为应用程序所需的接口。 9. **桥接模式**: 桥接模式将抽象部分与其实现部分...
适配器模式类似于在语言不通的情况下,借助一个翻译来帮助双方沟通。例如,你遇到一位来自香港的女孩,你们无法直接交流,这时候可以通过一个懂普通话和粤语的朋友来充当“适配器”,使得双方能够顺利沟通。在编程中...
《ESB项目需求分析和方案设计浅谈》 企业服务总线(Enterprise Service Bus,简称ESB)是企业级集成的关键技术,它提供了一种灵活、可扩展的方式来连接和协调分布在不同系统中的服务。本文主要探讨ESB项目的需求...
### 浅谈C语言中图形处理技术 在深入探讨C语言下的图形处理技术之前,我们首先需要理解,为何在C语言环境下研究图形处理是如此重要。C语言作为一门功能强大且灵活的基础编程语言,被广泛应用于系统编程、游戏开发、...
* 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 * 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。 在Java中,代理模式可以使用接口和...
7. **适配器模式**:将一个类的接口转换成客户希望的另一个接口。适配器使原本不兼容的类能够协同工作。在代码中,可能通过类适配器或对象适配器的形式呈现。 8. **策略模式**:定义一系列算法,并将每一个算法封装...
本文将深入探讨如何有效地在Android应用中使用ListView组件,包括它的基本使用、自定义适配器、性能优化以及滚动事件处理。 ### 1. 基本使用 ListView的基本使用涉及到两个关键部分:布局文件和适配器。在布局文件...
七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...
不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的。在实际上,装饰器模式和代理模式的实现方式基本一致,只在目标的存在上有些差别。 二、初步分析 在装饰器模式中,...
此外,还要考虑数据格式转换、交易特征、适配器需求、消息通信模式,以及非功能性需求,如平台的扩展性、高可用性、性能、数据传输可靠性、可管理性、安全性和错误处理等。 对于功能性需求,我们需要明确各个系统的...
系统能够对PLC适配器及其他元件设备失灵进行诊断,发出警报。当传感器、信号传输设备等出现问题时,PLC技术可根据警报值预估和判断故障,并根据故障程度发出警报。 总结来说,PLC技术在煤矿带式输送机设计中的应用...