策略模式概述:该设计模式是实现一个接口,各个子类去实现这个接口,在各个子类中可以实现各自的算法,然后在客户端持有这个接口的引用,可以随时去调用这个接口任何的一个实现算法
优点:充分体现了高内聚,低耦合及扩展性(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