`
JavaSam
  • 浏览: 951710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 回调机制之策略模式

    博客分类:
  • JAVA
阅读更多
package com.file;

import java.io.File;
import java.io.IOException;


public class ProcessFiles {
	/**
	 * 策略模式
	 * @author Administrator
	 *重点
	 */
	public interface Strategy{
		void process(File file);
	}
	private Strategy strategy;
	private String ext;//扩展名称
	
	public ProcessFiles (Strategy strategy , String ext){
		this.strategy = strategy;
		this.ext = ext;
	}
	
	public void start (String[] args){
		try {
			if(args.length == 0){
				processDirectoryTree(new File("."));
			}else{
				for(String arg : args){
					File fileArg = new File(arg);
					if(fileArg.isDirectory()){
						processDirectoryTree(fileArg);
					}else{
						if(!arg.endsWith("." + ext)){
							arg += "." + ext;
						}
						strategy.process(new File(arg).getCanonicalFile());
					}
				}
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	public void processDirectoryTree(File root)throws IOException{
		for(File file : Directory.walk(root.getAbsoluteFile(),".*\\." + ext)){
			strategy.process(file.getCanonicalFile());
		}
	}
	public static void main(String[] args) {
		new ProcessFiles(new ProcessFiles.Strategy() {
			public void process(File file) {
				System.out.println(file);
			}
		}, "java").start(new String[]{"."});
	}
}
 
分享到:
评论

相关推荐

    详解Java的回调机制

    Java的回调机制是一种设计模式,它允许一个对象在完成特定操作后通知另一个对象。这种机制在软件开发中常用于处理事件、异步编程以及对象间的通信。回调的主要优点是提高了代码的灵活性和可扩展性。 1. **回调的...

    websocket 实现实时推送的例子(工厂模式,回调机制)

    在这个"WebSocket 实现实时推送的例子(工厂模式,回调机制)"中,我们将深入探讨如何利用WebSocket来构建一个实时推送系统,并结合工厂模式和回调机制来增强其灵活性和可维护性。 首先,让我们了解一下**工厂模式*...

    两个经典例子让你彻底理解java回调机制(csdn)————程序.pdf

    Java回调机制是一种编程模式,它允许一个对象在另一个对象完成特定操作后被通知或调用。这种机制在软件设计中非常常见,特别是在处理异步操作和事件驱动编程中。通过回调,一个对象(调用者)可以注册一个回调函数或...

    java中的回调函数.docx

    在Java中,回调机制通常通过接口实现,因为Java不支持像C++那样的指针。以下是对回调函数及其在Java中如何工作的详细说明: 1. **回调函数的基本概念**: 回调函数是一种在特定条件满足时,被一个方法调用的另一个...

    回调函数被连续执行两次或多次的原因

    在C#等语言中,通常使用事件和委托来实现回调机制。当一个事件被定义时,可以通过`+=`操作符将事件处理程序(即回调函数)与该事件关联起来。如果这个操作被执行了两次或多次,那么每次触发该事件时,对应的回调函数...

    设计模式java 版本

    在Java中,它常用于实现回调机制和事件驱动编程。 15. **解释器模式**:给定一个语言,定义它的文法表示,并提供一个解释器,该解释器使用该表示来解释语言中的句子。在Java中,它可用于实现简单的解析器,如表达式...

    android接口回调

    在Android开发中,接口回调是一种常见的通信机制,用于在不同组件之间传递信息,尤其是在异步操作完成后更新UI或执行其他后续操作时。本篇将详细阐述Android接口回调的基本概念、实现方式以及其在实际开发中的应用。...

    基于Java 谈回调函数

    例如,Java Swing和JavaFX的事件处理器就是回调机制的一个实例,用户点击按钮等事件发生时,相应的事件处理器方法会被调用。 回调函数的意义在于: 1. **解耦合**:调用者和被调用者之间的依赖关系被减弱,两者只...

    Java并发编程:设计原则与模式(第二版)-3

    9. **Future与CompletableFuture**:Future接口代表异步计算的结果,CompletableFuture则提供了更强大的功能,可以构建复杂的异步流程并行执行,便于实现链式调用和回调。 10. **并发编程最佳实践**:书中总结了在...

    回调进度条拷贝文件

    - 设计合理的回调机制,如使用定时器来控制回调频率。 - 确保进度计算的准确性,特别是在处理大文件或大量小文件时。 - 使用异步UI更新技术,如Android的`runOnUiThread`或JavaFX的`Platform.runLater`,以确保在...

    设计模式Java版

    这些模式提供了处理算法变体、事件处理、回调机制等常见问题的有效手段。 在"cn700_jc4479966333"这个文件中,我们可以期待找到关于这些设计模式的具体实现和示例。通过学习和理解这些模式,开发者可以更好地理解和...

    设计模式 java 参考模式

    模板模式与Callback回调函数的主要区别在于,模板模式在父类中固定了执行流程,而回调函数则是在运行时动态决定执行的逻辑。 3. 原型模式:原型模式是一种创建型设计模式,通过复制现有的对象来创建新的对象。在...

    深入浅析Android接口回调机制

    当我们将一个函数的引用作为参数传递给另一个函数,并由后者在特定条件满足时调用这个函数,这就构成了回调机制。这种机制允许我们解耦调用者和被调用者的执行顺序,使得程序设计更加灵活。 在Android中,接口回调...

    JAVA软件架构设计模式

    Java的很多框架,如Spring,都使用了模板方法模式来实现回调逻辑。 此外,书中还会讨论软件架构设计的关键原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则...

    在库里面实现注册函数回调

    在库的开发中,函数回调是一种常见的设计模式,它允许用户...正确地实现和管理回调机制对于构建健壮、可扩展的库至关重要。在实际应用中,开发者应考虑回调的性能、线程安全和生命周期管理等问题,以确保其稳定可靠。

    JAVA反射机制自定义框架测试代码

    我们可以根据这些信息动态地调用方法,这在处理事件、回调或者实现策略模式时非常有用。 3. 访问私有成员:Java的访问控制符(如private)限制了在类外部直接访问成员。然而,通过反射,我们可以绕过这些限制,直接...

    java事务 - 模板设计模式

    在文件`Transaction3`中,可能包含了具体实现上述模板设计模式的Java代码,包括`TransactionTemplate`类以及可能的子类和回调接口的定义。通过对这个文件的详细分析,我们可以学习如何将模板模式应用于事务管理,...

    Java工程师成神之路~-HollisChuang's Blog1

    最后,深入理解泛型、继承和自动装箱拆箱,以及如何实现回调机制,这些都是Java编程中的高级主题。同时,掌握字节码层面的知识,可以让我们更深入地理解Java的运行机制。 通过以上学习,你将能够踏上Java工程师的成...

    某站卖5000元的USDT跑分源码API监听自动回调usdt支付系统源码三级分销

    这个系统的核心在于API监听和自动回调机制,这在IT领域中属于关键的技术点。 首先,API(Application Programming Interface)是软件之间交互的桥梁,允许不同的应用系统之间共享数据和服务。在这个源码中,API监听...

Global site tag (gtag.js) - Google Analytics