策略模式:
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3884781.html "谢谢--
为什么使用:
策略模式主要用于有很多不同的方式来解决同一个问题的情景。
如:文件的保存:可保存成txt,也可保存成xml。
另外压缩文件、商场的促销策略等是类似的
如何使用:
需要定义一个接口或者抽象类来表示各种策略的抽象,
由于在选择适当的策略上有些不方便,需要不断地判断需要的类型,
因此需要用简单工厂方法来实现判断过程
例子:
用策略模式实现图片格式的存储
1.建立一个公共接口用来保存图片格式
public interface ImagineSave {
/**
* 图片存储格式
*/
public void save();
}
2.根据图片现有格式分别建立每一种格式的接口实现类
/**
* 策略类一:图片格式GIF
*
* @author XIEHEJUN
*
*/
public class GIFSave implements ImagineSave {
@Override
public void save() {
System.out.println("存储格式为GIF");
}
}
/**
* 策略类二:图片格式JPEG
*
* @author XIEHEJUN
*
*/
public class JPEGSave implements ImagineSave {
@Override
public void save() {
System.out.println("将图片保存为JPEG格式。");
}
}
/**
* 策略类三:图片格式PEN
*
* @author XIEHEJUN
*
*/
public class PENSave implements ImagineSave{
@Override
public void save() {
System.out.println("将图片保存为PEN格式。");
}
}
3.建立一个简单工厂类,实现格式判断过程
/**
* 建立简单工厂类
*
* @author XIEHEJUN
*
*/
public class TypeFactotry {
public static ImagineSave getSaver(String type) {
if (type.equalsIgnoreCase("GIF")) {
return new GIFSave();
} else if (type.equalsIgnoreCase("JPEG")) {
return new JPEGSave();
} else if (type.equalsIgnoreCase("PEN")) {
return new PENSave();
} else {
return null;
}
}
}
4.main函数
public static void main(String[] args) {
// TODO Auto-generated method stub
ImagineSave save = TypeFactotry.getSaver("JPEG");
save.save();
save = TypeFactotry.getSaver("GIF");
save.save();
save = TypeFactotry.getSaver("PEN");
save.save();
save = TypeFactotry.getSaver("GIF");
save.save();
}
java笔记--策略模式和简单工厂模式