상세 컨텐츠

본문 제목

Strategy Pattern

Java

by techbard 2016. 7. 20. 19:24

본문

반응형

Strategy.zip



# ICalcStrategy.java


public interface ICalcStrategy {

    

    int calc(Data data);


}



# Data.java


public class Data {

    private int x, y;

    private ICalcStrategy iCalcStrategy;


    public Data(int x, int y, ICalcStrategy iCalcStrategy) {

this.x = x;

this.y = y;

this.iCalcStrategy = iCalcStrategy;

    }

    

    public int calc() {

return iCalcStrategy.calc(this);

    }


    public int getX() {

        return this.x;

    }


    public int getY() {

        return this.y;

    }

}



# CalcPlus.java


public class CalcPlus implements ICalcStrategy {


    @Override

    public int calc(Data data) {

return data.getX() + data.getY();

    }

}



# CalcMultiply.java


public class CalcMultiply implements ICalcStrategy {


    @Override

    public int calc(Data data) {

return data.getX() * data.getY();

    }

}



# CalcMinus.java


public class CalcMinus implements ICalcStrategy {


    @Override

    public int calc(Data data) {

return data.getX() - data.getY();

    }

}



# Main.java


public class Main {


    public static void main(String[] args) {


Data dataPlus = new Data(1, 2, new CalcPlus());

Data dataMultiply = new Data(3, 4, new CalcMultiply());

Data dataMinus = new Data(1, 2, new CalcMinus());


System.out.println(dataPlus.getX() + " plus " + 

dataPlus.getY() + " is " + dataPlus.calc());

System.out.println(dataMultiply.getX() + " multiply " + 

dataMultiply.getY() + " is " + dataMultiply.calc());

System.out.println(dataMinus.getX() + " minus " + 

dataMinus.getY() + " is " + dataMinus.calc());

    }

}



# 결과


Plus: 3

Multiply: 2

Minus: -1



반응형

관련글 더보기

댓글 영역