java设计模式之策略模式
2016-02-28 07:49
495 查看
策略模式概述:该设计模式是实现一个接口,各个子类去实现这个接口,在各个子类中可以实现各自的算法,然后在客户端持有这个接口的引用,可以随时去调用这个接口任何的一个实现算法
优点:充分体现了高内聚,低耦合及扩展性(OCP)原则
代码:
实现这个接口,定义各自的算法;
第一个实现类,定义一个加法:
第二个实现类,定义一个减法:
第三个实现了,定义一个乘法:
定义一个实现类Context
在客户端使用:
github地址为:https://github.com/zhouwei5200/policy
优点:充分体现了高内聚,低耦合及扩展性(OCP)原则
代码:
public interface Method { <span style="white-space:pre"> </span>//定义一个算法接口,用于子类实现 public int out(); }
实现这个接口,定义各自的算法;
第一个实现类,定义一个加法:
public class AddMethod implements Method{ private int i; private int j; public AddMethod(int i ,int j){ this.i = i; this.j = j; } //实现方法二,定义一个加法 @Override public int out() { // TODO Auto-generated method stub int num = i+j; return num; } }
第二个实现类,定义一个减法:
public class SubMethod implements Method { private int i; private int j; public SubMethod(int i ,int j){ this.i = i; this.j = j; } //实现方法二,定义一个减法 @Override public int out() { // TODO Auto-generated method stub int num = i-j; return num; } }
第三个实现了,定义一个乘法:
public class InvoMethod implements Method { private int i; private int j; public InvoMethod() { this.i = i; this.j = j; } / 实现方法三,定义一个乘法法 public int out() { // TODO Auto-generated method stub int num = i * j; return num; } }
定义一个实现类Context
package com.example.celue; public class Context { private Method method; public Context(Method method){ this.method = method; } public void out(){ this.method.out(); } }
在客户端使用:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //加法 Context contextAdd = new Context(new AddMethod(8,9)); contextAdd.out(); //减法 Context contextSub = new Context(new SubMethod(8,9)); contextSub.out(); // 乘法 Context contextInvo = new Context(new InvoMethod(8,9)); contextInvo.out(); //可以实现更多算法 } }
github地址为:https://github.com/zhouwei5200/policy
相关文章推荐
- JVM学习(4)——全面总结Java的GC算法和回收机制
- java打印可对齐的任意层数的杨辉三角形
- android imageView 获取指定名字的图片、从MyEclipse服务器下载图片
- spring IOC加载流程
- Java调用ffmpeg进行视频转码
- java并发包concurrent翻译及源码分析之:ReadWriteLock
- java38.Socket通信------使用ServerSocket建立聊天服务器---2
- 基于Eclipse的Android开发(一)——创建第一个Android项目
- spring常用事务配置
- 远程debug调试(eclipse)之openstack windows
- pycharm常用设置(keymap设置及eclipse常用快捷键总结)
- JVM:浅析Java虚拟机结构与机制
- spring加载资源文件中classpath*与classpath的区别
- 001Java-IO流的关系
- Eclipse上安装springsource-tool-suite
- 使用Eclipse开发Android源码
- 【慕课笔记】第五章 JAVA中的集合框架(中) 第1节 Map&HashMap简介
- 黑马第一天笔记
- 【JAVA】22、使用return结束一个方法
- (十二)Spring 单元测试