728x90
๋ฐ์ํ
๐ฏ ์์ดํ 38. ํ์ฅํ ์ ์๋ ์ด๊ฑฐ ํ์ ์ด ํ์ํ๋ฉด ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ผ.
์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ํ์ฅ ๊ฐ๋ฅ ์ด๊ฑฐ ํ์ ์ ํ๋ด ๋๋ค.
public interface Operation { double apply(double x, double y); } public enum BasicOperation implements Operation{ PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } }, TIMES("*") { public double apply(double x, double y) { return x * y; } }, DIVIDE("/") { public double apply(double x, double y) { return x / y; } }; private final String symbol; BasicOperation(String symbol) { this.symbol = symbol; } @Override public String toString() { return symbol; } }
์ด๊ฑฐ ํ์ ์ด ๊ทธ ์ธํฐํ์ด์ค์ ํ์ค ๊ตฌํ์ฒด ์ญํ ์ ํ๋ค. ์ด๊ฑฐ ํ์ ์ธ
BasicOperation
์ ํ์ฅํ ์ ์์ง๋ง
์ธํฐํ์ด์ค์ธOperation
์ ํ์ฅํ ์ ์๊ณ , ์ด ์ธํฐํ์ด์ค๋ฅผ ์ฐ์ฐ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
- ํ์ฅ ๊ฐ๋ฅ ์ด๊ฑฐ ํ์
์ด๊ฑฐ ํ์ ์์ฒด๋ ํ์ฅํ ์ ์์ง๋ง, ์ธํฐํ์ด์ค์ ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ธฐ๋ณธ ์ด๊ฑฐ ํ์ ์ ํจ๊ป ์ฌ์ฉํด ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.public enum ExtendedOperation implements Operation{ EXP("^") { public double apply(double x, double y) { return Math.pow(x, y); } }, REMAINDER("%") { public double apply(double x, double y) { return x % y; } }; private final String symbol; ExtendedOperation(String symbol) { this.symbol = symbol; } @Override public String toString() { return symbol; } }
์ด๋ ๊ฒ ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด ์์ ๋ง์ ์ด๊ฑฐ ํ์ ์ ๋ง๋ค ์ ์๋ค.
์ฐธ๊ณ ์๋ฃ
Joshua Bloch, ใEffective Java 3/Eใ, ๊ฐ์๋งต์ ์ฎ๊น, ํ๋ก๊ทธ๋๋ฐ์ธ์ฌ์ดํธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=
728x90
๋ฐ์ํ