Jac*_*kal 3 scheme design-patterns strategy-pattern
我是设计模式的新手,我正在努力学习策略模式.在这里和oodesign.com上阅读了一些例子之后,我对它的意图有了一个公平的理解.但是,我发现的大多数例子都是Java,C#或C/C++; 这些语言更有条理,迫使你有类等.谈到像计划这样的动态语言,我无法想象如何实现这种模式.有人能告诉我一个例子吗?
在Scheme和Racket中,策略模式是......等待...功能应用.
维基百科策略页面提供了使用它的示例:
//StrategyExample test application
class StrategyExample {
public static void main(String[] args) {
Context context;
// Three contexts following different strategies
context = new Context(new ConcreteStrategyAdd());
int resultA = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategySubtract());
int resultB = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategyMultiply());
int resultC = context.executeStrategy(3,4);
}
}
Run Code Online (Sandbox Code Playgroud)
在Scheme或Racket中,您只需将其写为:
(+ 3 4)
(- 3 4)
(* 3 4)
Run Code Online (Sandbox Code Playgroud)
而且,如果你想传递一个策略来应用于一组参数,它可能看起来像这样:
#lang racket
(define (apply-strategy strategy context)
(strategy context))
Run Code Online (Sandbox Code Playgroud)
实际上,战略模式存在的唯一主要原因是Java类型系统的弱点.