Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为每个策略制作不同的界面?_Ruby On Rails_Design Patterns_Strategy Pattern - Fatal编程技术网

Ruby on rails 如何为每个策略制作不同的界面?

Ruby on rails 如何为每个策略制作不同的界面?,ruby-on-rails,design-patterns,strategy-pattern,Ruby On Rails,Design Patterns,Strategy Pattern,我有以下情况 我做广告轮换,我想有一些策略。但是,当不同的策略需要不同的参数时,如何做到这一点呢 e、 g: 租赁展示策略只需要收集广告 但是 用户相关策略需要收集广告和用户信息 有没有什么方法可以做到干净,或者我应该放弃使用策略模式 更新: 有几行代码,我写道。我不知道,当每个策略都有不同的需求时,如何将策略参数化 class MyEngine::AdsHelper def get_ad ads = get_all_possible Engine.str

我有以下情况

我做广告轮换,我想有一些策略。但是,当不同的策略需要不同的参数时,如何做到这一点呢

e、 g:

租赁展示策略只需要收集广告

但是

用户相关策略需要收集广告和用户信息

有没有什么方法可以做到干净,或者我应该放弃使用策略模式

更新: 有几行代码,我写道。我不知道,当每个策略都有不同的需求时,如何将策略参数化

class MyEngine::AdsHelper
    def get_ad
        ads = get_all_possible
        Engine.strategy.get_next(ads)
    end
end

class MyEngine::Engine
    attr_accessor :strategy
end
初始值设定项:

MyEngine::Engine.strategy = MyEngine::Strategies::ConcreteStrategy.new 
考虑到该方法是基于使用一个接口和多个具体实现,我不太确定您在这里试图实现什么。我对所提供的信息的最初预感是,您的需求与战略模式并不匹配,但需要更多地了解您为提供备选方案而实际尝试实现的目标

策略模式概述伪代码 以上允许您使用生成器、工厂、DI框架或类似机制将任何特定的TaxStrategy实现注入到需要它的对象中,但需要一致的接口/抽象类来定义策略契约


希望有帮助……

您需要提供更多细节,您的问题不是很清楚。。。
interface ITaxStrategy:
    decimal CalculateTax (decimal Subtotal)

public class NYTaxStrategy : ITaxStrategy

    CalculateTax(decimal Subtotal)
    {
       return Subtotal * 0.08125;
    }

public class UKTaxStrategy: ITaxStrategy

    CalculateTax(decimal Subtotal)
    {
       return (Subtotal * 0.825) + VAT;
    }