zoukankan      html  css  js  c++  java
  • java笔记策略模式和简单工厂模式

    策略模式:

    --如果朋友您想转载本文章请注明转载地址"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();
    }

    知识重在总结和梳理,只有不断地去学习并运用,才能化为自己的东西。由于本人进阶猿类时间尚短,故此博客即是我学习,工作的笔记,也是和大家交流,相互提升技术的平台~希望大家不吝赐教~~ --但管努力,莫问前程,事在人为,功不唐捐。--和佑博客园
  • 相关阅读:
    原始套接字-自定义IP首部和TCP首部
    原始套接字-TCP/IP下三层数据显示
    ARP欺骗分析
    博弈论
    C++ map & set
    selenium+chrome配置环境
    windows下安装python+selenium
    python之configParser模块读写配置文件
    接口测试流程
    Python之读取文件配置
  • 原文地址:https://www.cnblogs.com/XHJT/p/3884781.html
Copyright © 2011-2022 走看看