Interpreter Pattern hiện đại với Sealed Types
Interpreter Pattern định nghĩa biểu diễn ngữ pháp của một ngôn ngữ và một thông dịch viên sử dụng biểu diễn đó để thông dịch các câu trong ngôn ngữ.
Kiến trúc Interpreter:
Interpreter an toàn kiểu dữ liệu trong Java 21
Khai báo ngữ pháp toán học đơn giản bằng Sealed Interfaces và giải thích biểu thức thông qua switch pattern matching:
public sealed interface Expr permits Number, Add, Multiply {}
public record Number(int value) implements Expr {}
public record Add(Expr left, Expr right) implements Expr {}
public record Multiply(Expr left, Expr right) implements Expr {}
public class InterpreterEvaluator {
public static int evaluate(Expr expr) {
return switch (expr) {
case Number n -> n.value();
case Add a -> evaluate(a.left()) + evaluate(a.right());
case Multiply m -> evaluate(m.left()) * evaluate(m.right());
};
}
}
Tuyệt đối không cần đến các phương thức interpret phân tán phức tạp ở từng concrete class.
Bình luận (0)
Đang tải bình luận...