策略模式:

--如果朋友您想转载本文章请注明转载地址"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. 工厂模式之简单工厂模式,head first设计模式

    简单设计模式比较简单,15分钟的时间,跟着我做,十几分钟学会简单设计模式,开始吧: 1.使用new实例化一个对象时,你肯定知道这种代码缺少弹性,绑定着具体的类会导致代码更加脆弱,简单工厂模式就是针对接 ...

随机推荐

  1. bower入门

    一.bower简介 bower是一个基于js的包管理工具,类似于java的maven. 官方网站:http://bower.io/ 二.安装bower 使用bower,首先要安装node npm和gi ...

  2. [BZOJ 2656][ZJOI2012]数列(递归+高精度)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2656 分析: 很容易想到递归分治,但遇到奇数时候f[i]=f[i/2]+f[i/2+1 ...

  3. android之读取SD卡状态

    package xidian.dy.com.chujia; import android.os.Build; import android.os.Environment; import android ...

  4. css知识点补充、css属性、

    1.媒体查询的css代码的优先级要比其他的高! 2.text-overflow: 定义文本溢出父级元素如何处理!    clip/ellipsis/string 3.overflow: visible ...

  5. nginx + Lua 实现自定义WAF

    文章摘自:https://github.com/unixhot/waf wget git@github.com:unixhot/waf.git

  6. Oracle添加数据文件创建表空间,创建用户代码

    1,添加数据文件创建表空间 CREATE TABLESPACE "TEST1" DATAFILE 'D:\ORACLE\11G\ORADATA\ORCL\TEST1.DBF' SI ...

  7. [转]Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  8. zabbix_监控_端口

        目的:监控web主机80端口是否在供提服务.如果不在发出报警.配置:    1.添加监控项(Items).        打开zabbix web管理界面:选择"Configurat ...

  9. 【poj3348】 Cows

    http://poj.org/problem?id=3348 (题目链接) 题意 给出平面上n个点,以这n个点中的一些围成的多边形面积 div 50的最大值. Solution 凸包求面积. 很好做, ...

  10. codevs1225 八数码难题

    题目描述 Description Yours和zero在研究A*启发式算法.拿到一道经典的A*问题,但是他们不会做,请你帮他们.问题描述 在 3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数 ...