学习日记-策略模式

-------android培训java培训、期待与您交流! ----------

策略模式

策略模式就是根据对象的某些属性来操作某些数据时我们可以根据其属性来提供自己的操作策略!
策略模式的用法:
1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 
2.需要使用一个算法的不同变体。 
3.算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
4.一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。 将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
下边的例子定义了一个猫类,要根据猫的某项属性来进行排序
//定义排序所需接口
package com.strategy;

public interface Comparable {

public 	int compareTo(Object o);
}

//定义猫类
package com.itcast.stragy;

public class Cat  implements Comparable{
int height;
//在此处加的是什么比较器就可以实现怎么样的排序
private Comparator comparator=new CatHeightComparator();

public Comparator getComparator() {
	return comparator;
}
public void setComparator(Comparator comparator) {
	this.comparator = comparator;
}

public int getHeight() {
	return height;
}
public void setHeight(int height) {
	this.height = height;
}
int  weight;
public Cat(int height, int weight) {
	super();
	this.height = height;
	this.weight = weight;
}
@Override
public int compareTo(Object o) {
//	if(o instanceof Cat){
//		Cat c=(Cat)o;
//		if(this.height>c.height)return 1;
//		else if(this.height==c.height)return 0;
//		else return -1;
//	}
//	return -100;
	Cat c=(Cat)o;
//	在此处使用上不定义的比较器在实现了comparable接口而实现的方法中进行比较
	return comparator.compare(this, c);
}

public String toString(){
	return height+"|"+weight;
}
}


//有时候用户会想要根据自己的需求按照自己的意愿根据某些属性进行排序操作所以定义一个///接口Comparator
package com.itcast.stragy;

public interface Comparator {
	int compare(Object o1,Object o2);
}
//提供其实现类,在其中就可以根据自己的需求定义其实现方式
package com.itcast.stragy;

public class CatHeightComparator implements Comparator{

	@Override
	public int compare(Object o1, Object o2) {
		Cat c1=(Cat)o1;
		Cat c2=(Cat)o2;
		if(c2.weight>c1.weight)return 1;
		else if(c2.weight==c1.weight)return 0;
		else return -1;
		
	}

}

-------android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值