策略设计模式

1)File中list()方法的策略设计模式

public String[] list(FilenameFilter filter) {
	String names[] = list();
	if ((names == null) || (filter == null)) {
	    return names;
	}
	ArrayList v = new ArrayList();
	for (int i = 0 ; i < names.length ; i++) {
	    if (filter.accept(this, names[i])) {
		v.add(names[i]);
	    }
	}
	return (String[])(v.toArray(new String[v.size()]));
    }

设计需求:在此文件下获取我想要的名称列表,想要的规则肯定是变化的,所以这个就是想要的策略,把策略当参数传递,比如我想要文件名大于3的文件名称

public static void main(String[] args) {
		File file = new File("d:\\");
		String[] names = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				return name.length() < 10;
			}
		});
		for (String name :
				names) {
			System.out.println(name);
		}

	}

感悟:file相当于拥有一个属性,就是获取文件列表,然后要对这个文件列表进行处理,会有不同的方式,然后选择填入策略进行处理

比如,你有一个服务,能够获取到一个类,或者一个类的列表,你需要对其进行排序,或者复制,获取从列表中获取一个值,则都可以用策略

重要的一点是,把变化的抽象出方法,如果是自己的方法,那就可以当做成模板模式,如果此变化抽象出方法是其他类的方法,不管是放入方法的参数,还是放入到类的属性,都可以是策略模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值