package designpatten;
/**
* action组
*/
interface Action{
public void execute(Context context);
}
class ActionImpl1 implements Action{
@Override
public void execute(Context context){
int status=context.getStatus();
System.out.println(status);
}
}
class ActionImpl2 implements Action{
@Override
public void execute(Context context) {
int status=context.getStatus();
if(status==1){
context.setStatus(2);
}
System.out.println(context.getStatus());
}
}
class ActionImpl3 implements Action{
@Override
public void execute(Context context) {
System.out.println("actionimpl3");
}
}
/**
* 上下文类
* 在各个action中共享状态
*/
class Context{
private int status;
public Context(int status){
this.status=status;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
/**
* 过滤器
*/
public class Filter implements Action{
private Action [] actions;
public Filter(Action [] actions){
this.actions=actions;
}
public Action[] getActions() {
return actions;
}
public void setActions(Action[] actions) {
this.actions = actions;
}
@Override
public void execute(Context context) {
for(Action action : this.actions) {
action.execute(context);
}
}
public static void main(String [] args){
Action [] actions=new Action[]{new ActionImpl1(),new ActionImpl2(),new ActionImpl3()};
Context context=new Context(1);
Action filter=new Filter(actions);
filter.execute(context);
}
}
/**
运行结果:
1
2
actionimpl3
*/
/**
* action组
*/
interface Action{
public void execute(Context context);
}
class ActionImpl1 implements Action{
@Override
public void execute(Context context){
int status=context.getStatus();
System.out.println(status);
}
}
class ActionImpl2 implements Action{
@Override
public void execute(Context context) {
int status=context.getStatus();
if(status==1){
context.setStatus(2);
}
System.out.println(context.getStatus());
}
}
class ActionImpl3 implements Action{
@Override
public void execute(Context context) {
System.out.println("actionimpl3");
}
}
/**
* 上下文类
* 在各个action中共享状态
*/
class Context{
private int status;
public Context(int status){
this.status=status;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
/**
* 过滤器
*/
public class Filter implements Action{
private Action [] actions;
public Filter(Action [] actions){
this.actions=actions;
}
public Action[] getActions() {
return actions;
}
public void setActions(Action[] actions) {
this.actions = actions;
}
@Override
public void execute(Context context) {
for(Action action : this.actions) {
action.execute(context);
}
}
public static void main(String [] args){
Action [] actions=new Action[]{new ActionImpl1(),new ActionImpl2(),new ActionImpl3()};
Context context=new Context(1);
Action filter=new Filter(actions);
filter.execute(context);
}
}
/**
运行结果:
1
2
actionimpl3
*/