Java設計模式菜鳥系列(二十)直譯器模式建模與實現
阿新 • • 發佈:2019-02-15
直譯器模式(Interpreter):它定義了物件與物件之間進行某種操作之後會得到什麼值。一般主要應用在OOP開發中的編譯器的開發中,所以適用面比較窄。
一、uml建模:
二、程式碼實現
/** * 直譯器模式(Interpreter):它定義了物件與物件之間進行某種操作之後會得到什麼值。 * * 一般主要應用在OOP開發中的編譯器的開發中,所以適用面比較窄。 * * 示例:先定義一個實體類,封裝兩個變數num1、num2 */ class Entity { private double num1; private double num2; public Entity(double num1, double num2) { this.num1 = num1; this.num2 = num2; } public double getNum1() { return num1; } public void setNum1(double num1) { this.num1 = num1; } public double getNum2() { return num2; } public void setNum2(double num2) { this.num2 = num2; } } /** * 運算介面 */ interface Operatable { public double interpreter(Entity entity); } /** * 加法運算 */ class AddOperation implements Operatable { @Override public double interpreter(Entity entity) { return entity.getNum1() + entity.getNum2(); } } /** * 減法運算 */ class MinusOperation implements Operatable { @Override public double interpreter(Entity entity) { return entity.getNum1() - entity.getNum2(); } } /** * 客戶端測試類 * * @author Leo */ public class Test { public static void main(String[] args) { /** * 建立加法、減法運算 */ AddOperation addOperation = new AddOperation(); MinusOperation minusOperation = new MinusOperation(); /** * 一、分步運算 */ double addResult = addOperation.interpreter(new Entity(20, 30)); double minusResult = minusOperation.interpreter(new Entity(20, 30)); System.out.println("addResult = " + addResult); System.out.println("minusResult = " + minusResult); /** * 二、混合運算 */ double mixResult = new AddOperation().interpreter(new Entity( addOperation.interpreter(new Entity(20, 30)), minusOperation .interpreter(new Entity(40, 50)))); System.out.println("mixResult = " + mixResult); } }
三、總結
直譯器模式用來做各種各樣的直譯器,如正則表示式的直譯器等等。