策略模式的简单应用

  • 实例说明

  在使用图片处理软件处理处理图片后,需要选择一种格式进行保存,然而各种格式在底层实现的算法并不相同,这刚好适合策略模式。本实例将演示如何使用策略模式与简单工厂模式组合进行开发。

  • 关键技术

  在自定义接口时,可以在接口中定义常量如JDBC数据库信息;也可以增加方法,这是借口最常见的用法。此外,还有一种特殊类型的接口其内部是空的,这种接口起到一个标识的作用。常见的如Cloneable和Serializable。使用接口可以将若干类统一成一种类型,这样就可以使用多态了。

  提示:接口与类的关系类似角色和演员。一个演员可以演多个角色,一个角色也可以有多个演员来演。

  对于策略模式而言,需要定义一个接口或者抽象类来表示各种策略的抽象,这样就可以使用多态来让虚拟机选择不同的实现类。然后让每一种具体的策略来实现这个接口或继承抽象类,并为其中定义的方法提供具体的实现。由于在选择适当的策略上有些不方便,需要不断的判断需要的类型,因此用简单工厂方法来实现判断过程。

  • 设计过程

(1)编写接口ImageSaver,在该接口中定义了save()方法,代码如下:

public interface ImageSaver {
    void save();                //定义save()方法
}

(2)编写类GIFSaver,该类实现的ImageSaver接口,在实现save()方法时将图片保存成GIF格式。代码如下:

 public class GIFSaver implements ImageSave {
    @Override
    public void save() {
        //GIFsave
    }
}

(3)编写类TypeChooser,该类根据用户提供的图片类型来选择合适的图片存储方式。代码如下:

public class TypeChooser {
    public static ImageSaver getSaver(String type){
        if(type.equalsIgnoreCase("GIF")){
            return new GIFSaver();
        }else{
            return null;
        }
    }
}

提示:此处使用了简单工厂模式,根据描述图片类型的字符串创建相应的图片保存类对象。

(4)具体操作

  略

扫描二维码关注公众号,回复: 5814178 查看本文章

猜你喜欢

转载自www.cnblogs.com/cglib/p/10672606.html