java实现策略模式使用示例_java

思路如下:

使用interface来定义一个接口,在该接口中定义save()方法;
根据图片格式定义不同的类,分别在这些类中使用关键字implements实现接口;
创建一个实现选择的类,在该类中定义实现选择的方法,该方法返回值为对应的图片保存类;
在主方法中实现接口。
代码如下:

复制代码 代码如下:

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

public class GIFSaver implements ImageSaver {
    @Override
    public void save() {//实现save()方法
        System.out.println("将图片保存成GIF格式");
    }
}

public class JPEGSaver implements ImageSaver {

    @Override
    public void save() {
        System.out.println("将图片保存成JPG格式");
    }
}

public class PNGSaver implements ImageSaver {

    @Override
    public void save() {
        System.out.println("将图片保存成PNG格式");
    }

}

public class TypeChooser {
    public static ImageSaver getSaver(String type) {
        if (type.equalsIgnoreCase("GIF")) {//使用if else语句来判断图片的类型
            return new GIFSaver();
        } else if (type.equalsIgnoreCase("JPEG")) {
            return new JPEGSaver();
        } else if (type.equalsIgnoreCase("PNG")) {
            return new PNGSaver();
        } else {
            return null;
        }
    }
}

public class User {
    public static void main(String[] args) {
        System.out.print("用户选择了GIF格式:");
        ImageSaver saver = TypeChooser.getSaver("GIF");//获得保存图片为GIF类型的对象
        saver.save();
        System.out.print("用户选择了JPEG格式:");//获得保存图片为JPEG类型的对象
        saver = TypeChooser.getSaver("JPEG");
        saver.save();
        System.out.print("用户选择了PNG格式:");//获得保存图片为PNG类型的对象
        saver = TypeChooser.getSaver("PNG");
        saver.save();
    }
}

时间: 2024-10-31 17:21:51

java实现策略模式使用示例_java的相关文章

Java设计模式之策略模式详解_java

本文实例为大家分享了Java策略模式,供大家参考,具体内容如下 1.策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(PolicyPattern). 定义如下: Define a family of algorithms,encapsulate each one,and make them interchangeable.    (定义一组算法,将每个算法都封装起来,并且使它们之间可以互换.) 策略模式的通用类图如下所示: 策略模式的三个角色: ● Context

Java设计模式编程中的责任链模式使用示例_java

责任链模式:多个对象由其对象对应下家的引用连成一条链,请求在这个链上传递,直到 链上的某一个接收对象处理此请求.因为请求的客户端并不知道链上最终是谁来处理这个请求,使得系统可以在不影响客户端的情况下动态地重新组织和分配责任, 从而避免了请求发送者与请求处理者之间的耦合. 责任链械中涉及到三种角色: 1,抽象处理者角色 2,具体处理者角色 3,请求发送者 小例子:假设去买房子,买房子就需要砍价, 卖房的人职位不同,可以优惠的价格也不同,不同职位就可以形成一个处理请求的链.我们暂定: * 基层销售员

java中策略模式深入分析及示例

策略模式(Strategy Pattern)中体现了两个非常基本的面向对象设计的原则 –封装变化的概念 –编程中使用接口,而不是对接口的实现 策略模式的定义 –定义一组算法,将每个算法都封装起来,并且使它们之间可以互换. –策略模式使这些算法在客户端调用它们的时候能够互不影响地变化 策略模式的编写步骤 –1.对策略对象定义一个公共接口. –2.编写策略类,该类实现了上面的公共接口 –3.在使用策略对象的类中保存一个对策略对 象的引用. –4.在使用策略对象的类中,实现对策略对象 的set和get

Java设计模式--策略模式

策略模式(别名:政策) 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. Strategy Pattern(Another Name: Policy) Define a family of algorithms, encapsulate each one, and make them inter changeable. Strategy lets the algorithm vary independently from clients th

JAVA实现双边决策的示例_java

现实生活中存在很多问题,比如商品买卖如何实现商家利润最大化?大学生招生录取如何实现整体效果最好?病人医生如何实现整体服务水平最高等?这些我们都可以把他统一的转化为双边决策问题.下面先说说自己对双边决策的理解. 双边决策--个人理解 为了帮助大家理解,我用一个简单的例子介绍什么是双边决策,加入现在市场上有10位顾客,分别为A0.A1.A2.A3.A4.A5.A6.A7.A8.A9,市场上有是个商品,分别为B0.B1.B2.B3.B4.B5.B6.B7.B8.B9,现在要求要把这10个商品分别分给这

详解DES加密算法及在Java程序中的使用示例_java

DES加密算法DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来. DES算法的入口参数有三个:Key.Data.Mode.其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密. DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥

JAVA HashMap详细介绍和示例_java

第1部分 HashMap介绍HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口.HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的.HashMap 的实例有两个参数影响其性能:"初始容量" 和 "加载因子".容量

java协变返回类型使用示例_java

Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类.协变返回类型允许返回更为具体的类型.示例程序如下: 复制代码 代码如下: import java.io.ByteArrayInputStream;import java.io.InputStream; class Base{    //子类Derive将重写此方法,将返回类型设置为InputStream的子类   public InputStream getInput()   { 

Java的绘图模式使用浅析_java

绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色.例如,后绘制的覆盖早先绘制的:或者后绘制与早先绘制的两种颜色按某种规则混合.主要有正常模式和异或模式两种:正常模式是后绘制的图形覆盖在早先绘制的图形之上,使早先贩图形的重叠部分不再可见.异或模式把绘图看作是按图形着色.异或模式绘图时,将当前正要绘图的颜色.原先绘制的颜色以及异或模式设定的颜色作特定的运算,得到实际绘图颜色.设置绘图模式的方法有: setPaintMode():设置绘图模式为覆盖模式(正常模式).正常模式是绘