首页 > 其他 > 详细

策略模式

时间:2019-02-17 17:10:44      阅读:154      评论:0      收藏:0      [点我收藏+]
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!