상세 컨텐츠

본문 제목

Command Pattern - serial running - modified

Java

by techbard 2016. 7. 21. 14:58

본문

반응형

Command03.zip



# ICalc.java


public interface ICalc {

    void calc(Data data);

}



# Data.java


public class Data {

    private int x, y = 0;


    public Data(int x, int y) {

this.x = x;

this.y = y;

    }


    public int getX() {

        return x;

    }


    public int getY() {

        return y;

    }

}



# Plus.java


public class Plus implements ICalc {


    @Override

    public void calc(Data data) {

int x = data.getX();

int y = data.getY();

System.out.println("plus: " + (x + y));

    }

}



# Minus.java


public class Minus implements ICalc {


    @Override

    public void calc(Data data) {

int x = data.getX();

int y = data.getY();

System.out.println("minus: " + (x - y));

    }

}




# Multiply.java


public class Multiply implements ICalc {


    @Override

    public void calc(Data data) {

int x = data.getX();

int y = data.getY();

System.out.println("multiply: " + (x * y));

    }

}



# CalcManager.java


import java.util.ArrayList;


public class CalcManager {

    private ArrayList<ICalc> calcs = new ArrayList<>();

    

    public void execute(Data data) {

System.out.println("x: " + data.getX());

System.out.println("y: " + data.getY());

System.out.println("==========");

for (ICalc calc : calcs) {

   calc.calc(data);

}

    }

    

    public void add(ICalc calc) {

if (!calcs.contains(calc)) {

   calcs.add(calc);

}

    }

}



# Main.java


public class Main {

    public static void main(String[] args) {

Data data = new Data(3, 4);


CalcManager cm = new CalcManager();

cm.add(new Plus());

cm.add(new Minus());

cm.add(new Multiply());

cm.execute(data);

    }

}



# 결과


x: 3

y: 4

==========

plus: 7

minus: -1

multiply: 12


반응형

관련글 더보기

댓글 영역