import java.util.Scanner; /*策略模式 * 可以动态的改变对象的行为,可以使程序有多种实现方式 * 策略模式中有三个对象: * 环境对象:该类实现类对抽象策略中定义的接口或抽象类的引用 * 抽象策略对象:可由接口或抽象类来实现 * 具体策略对象:封装了实现不同功能的不同算法 * 使用不同的算法来实现应用程序的功能,具体的选择可以有环境对象来完成,可以避免使用条件语句造成混乱 */ interface Save { void save(); } class GIFSave implements Save { @Override public void save() { System.out.println("将图片储存成GIF模式"); } } class JPEGSave implements Save { public void save() { System.out.println("将图片储存成JPEG模式"); } } class ChooseType { private Save save; public ChooseType(Save save) { this.save=save; } public static Save getSave(String type) { if(type.equalsIgnoreCase("JPEG")) { return new JPEGSave();} else if(type.equalsIgnoreCase("GIF")) { return new GIFSave();} else return null; } } public class ImageSaver { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入想要转化的格式"); String type = scan.next(); //Object Save; Save jpeg = ChooseType.getSave(type); jpeg.save(); System.out.println("储存完毕"); } }
策略模式有效的解决了客户端的多重选择问题,避免了多重if~else带来的混乱,使得代码更加有序
原文:https://www.cnblogs.com/changhe1995/p/10391793.html