您的位置:首页 > 编程语言 > Java开发

java设计模式之策略模式

2016-02-28 07:49 495 查看
策略模式概述:该设计模式是实现一个接口,各个子类去实现这个接口,在各个子类中可以实现各自的算法,然后在客户端持有这个接口的引用,可以随时去调用这个接口任何的一个实现算法

优点:充分体现了高内聚,低耦合及扩展性(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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: