策略模式:

--如果朋友您想转载本文章请注明转载地址"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笔记--策略模式和简单工厂模式的更多相关文章

  1. Java设计模式(一) 简单工厂模式不简单

    摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...

  2. Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式

    工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...

  3. C++设计模式 ==> 策略模式与简单工厂模式结合

    简介 策略模式相较之于简单工厂模式适用于生产方法经常变化且方法较为繁多的情况,因为生产方法时常变化就会需要频繁修改工厂类,违背了开闭原则,这时就可以用策略选择类由客户端根据需求动态切换策略.且策略模式 ...

  4. 设计模式之策略模式&简单工厂模式

    学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...

  5. Java设计模式:Simple Factory(简单工厂)模式

    概念定义 简单工厂(Simple Factory)模式,又称静态工厂方法(Static Factory Method)模式,即定义一个工厂类,根据传入的不同参数创建不同的产品实例,这些实例对象具有共同 ...

  6. 设计模式(Java版)-创建型模式之简单工厂模式

    前言:这段时间在学习设计模式,本人也是小菜一枚(所以写的如果有错误的地方请大大们给予指出).这个东西也是我一直想学习的,从点点滴滴做起,记录下自己每天的领悟! 一.工厂模式的动机 在软件系统中,经常面 ...

  7. Java设计模式(三)简单工厂模式

    定义与类型 定义:由一个工厂对象决定创建出哪一种产品类的实例 类型:创建型,但不属于GOF23种设计模式 适用场景 工厂类负责创建的对象比较少 客户端(应用层)只知道传入工厂类的参数,对于如何创建对象 ...

  8. Java设计模式(1)——创建型模式之简单工厂模式(Simple Factory)

    设计模式系列参考: http://www.cnblogs.com/Coda/p/4279688.html 一.概述 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高 ...

  9. Java描述设计模式(02):简单工厂模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景简介 1.引入场景 订餐流程简单描述 1).食品抽象类,规定食品的基础属性操作 2).鱼类,鸡肉类食品类扩展 3).订餐流程类,根 ...

  10. Objective-C 工厂模式(上) -- 简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...

随机推荐

  1. (转载)python2+selenium自动化测试系列(二)

    16.Selenium2+python自动化16-alert\confirm\prompt 17.Selenium2+python自动化17-JS处理滚动条 18.Selenium2+python自动 ...

  2. android http 通信(java原生类库实现)

    get方式 private void doGet(){ URL httpurl = new URl(url); HttpURLConnection conn = (HttpURLConnection) ...

  3. php curl模拟post请求提交数据

    最近在做校园图书馆图书信息的采集程序,既然是图书馆图书的采集,肯定有提交搜索的页面,无非是post提交,让我想到了curl模拟提交,首先通过firebug进行抓包查询下post提交后的格式如下: tx ...

  4. ECSTORE2.0 定时任务配置

    今天在配置ecstore2.0的定时任务时候,发现ECOS后台每30秒通过JS调用 http://localhost/ecstore-bugfix/index.php/shopadmin/index. ...

  5. day06 Request Response

    rw 读写模板的设置 day05 Request Response 1. HttpServletResponse 简介 1.1 Response 的 OutputStream 输出中文的问题 1.2 ...

  6. 《Linux就该这么学》第十六天课程

    今天笔记有点少就不发了,分享一下第23章 使用OpenLDAP部署目录服务很实用 下面是DHCP动态管理地址,如需深入学习请前往 https://www.linuxprobe.com/chapter- ...

  7. oracle入坑日记<一> 安装

    学习日记系列(前辈/大神勿喷) 一.下载 下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads ...

  8. spring boot项目配置RestTemplate超时时长

    配置类: @Configuration public class FeignConfiguration { @Bean(name="remoteRestTemplate") pub ...

  9. 用XYNTService把Python程序变为服务

    1. XYNTService的使用 1.1. 介绍 1.2. XYNTService 2. 用XYNTService把Python程序变为服务 1. XYNTService的使用 1.1. 介绍 通常 ...

  10. 学习Spark2.0中的Structured Streaming(一)

    转载自:http://lxw1234.com/archives/2016/10/772.htm Spark2.0新增了Structured Streaming,它是基于SparkSQL构建的可扩展和容 ...