标签: strategy-pattern

在Perl中清理策略模式的实现

如何在Perl中编写策略模式的干净实现?我希望以一种利用Perl功能的方式来实现.

perl design-patterns strategy-pattern

3
推荐指数
1
解决办法
1013
查看次数

3
推荐指数
1
解决办法
1436
查看次数

战略的替代模式

我有一段代码,我开始将策略模式放在适当的位置,如下所示:

IStrategy
StrategyA : IStrategy
StrategyB : IStrategy
StrategyC : IStrategy
Run Code Online (Sandbox Code Playgroud)

界面上只有一个Calculate方法.在实现之后,结果发现所有3种具体类型都具有相同的Calculate方法代码和两个同名的Properties,只是设置了不同的值.

因此,为了删除重复,我使接口成为一个抽象类,并将方法和属性向下移动到那个,只需在具体类型的构造中设置基本属性及其各自的值.

现在我知道模式并不是硬性规定,而是规则,但是我已经从指南中歪曲了这一点,我不禁想到还有另一种我应该关注的模式?

任何人都可以建议任何其他方法,让我这样,很容易添加新的'策略'下线.可能会发现我们需要改变其中一些新案例中的逻辑,所以我怎样才能构建它以便我没有重复的代码,但是有一个灵活的设计可以让我改变一下呢?

谢谢.

refactoring design-patterns strategy-pattern

3
推荐指数
1
解决办法
2578
查看次数

有人能告诉我一个使用方案的战略模式的简单例子吗?

我是设计模式的新手,我正在努力学习策略模式.在这里和oodesign.com上阅读了一些例子之后,我对它的意图有了一个公平的理解.但是,我发现的大多数例子都是Java,C#或C/C++; 这些语言更有条理,迫使你有类等.谈到像计划这样的动态语言,我无法想象如何实现这种模式.有人能告诉我一个例子吗?

scheme design-patterns strategy-pattern

3
推荐指数
1
解决办法
268
查看次数

实施战略模式.我每次都要"新手"吗?

我正在尝试实施战略模式.这是我实施的一部分:

public List<string> GetOrderedEmployeeNames(IOrderByStrategy strategy)
{
   return GetEmployeeFullNames().OrderBy(strategy.Order);
}
Run Code Online (Sandbox Code Playgroud)

现在每次我调用这个函数我都要写:

var employees = GetOrderedEmployeeNames(new OrderByFamilyName());
Run Code Online (Sandbox Code Playgroud)

每次正确的方式或者我是否错误地实施了这个策略?

c# strategy-pattern

3
推荐指数
1
解决办法
150
查看次数

迭代执行命令列表 - 哪个模式?

我编写了一个Java程序,它读入一个包含要执行的命令的文件(用我自己编写的语言).命令以字符串形式读入并放入数组中.现在,"调度程序" - 方法将循环遍历数组,解释命令并调用将对其执行操作的相应方法.

这当然导致了一大堆嵌套的if语句:

if commandReadIn == this, do that... 
if commandReadIn is of type x, get next element,treat next element as argument... 
etc. 
Run Code Online (Sandbox Code Playgroud)

现在我只有一些命令,但如果我想添加数百个呢?代码将变得无法维护.

现在我想知道是否可以完全摆脱条件逻辑.这里的命令模式似乎没什么用,因为我不得不在某个时候解释字符串..这意味着很多嵌套的"if".如果不可能,那么以一种能够轻松添加,编辑或删除命令的方式重构命令及其语法的最佳方法是什么?

java design-patterns strategy-pattern command-pattern

3
推荐指数
1
解决办法
1801
查看次数

使用枚举的策略模式.在Java中需要一个简单的例子

我正在尝试理解java中的策略模式和枚举.我用谷歌搜索了这篇文章并找到了一些关于这个主题的文章,但是大多数文章看起来都太复杂了.任何人都可以提供一个简单的示例或其他链接,使用java在外行术语中使用枚举来演示策略模式吗?

提前谢谢你.

java enums design-patterns strategy-pattern java-ee

3
推荐指数
1
解决办法
7177
查看次数

哪种设计模式可用于铁路票价计算?

我正在开发一种类似于铁路票务的解决方案.

背景:泰米尔纳德邦有18个火车站.乘客需要一张票.对于最多5站的旅程,票价是10卢比.在5个车站之后,每5个车站将收取5卢比的额外费用.对于完整的拉伸旅程,即从第1站到最后一站,票价是卢比.20.

例如

Input 1 : StationFrom - Guindy, StationTo - Kadambakkam
Output 1 : Print ticket. i.e. StationFrom : Guindy, StationTo : Kadambakkam, Total Stops : 3, Total Fare : 10

Input 2 : StationFrom - Guindy , StationTo - Chennai Fort
Output 2 : Print ticket. i.e. StationFrom : Guindy, StationTo : Chennai Fort, Total Stops : 8, Total Fare :15
Run Code Online (Sandbox Code Playgroud)

将来,可以添加更多关于票价计算的业务规则.

问题是,哪些设计模式在票价计算中是正确的选择?

oop design-patterns decorator strategy-pattern builder-pattern

3
推荐指数
1
解决办法
1121
查看次数

如何将策略模式与依赖注入 (autofac) 一起使用

我想加入使用策略模式和 DI。

class A : IBase
{
    public void Do();
}

class B : IBase
{
    public void Do();
}

interface IBase
{
    void Do();
}

class Context()
{
    private _usedClass;
    void SetClass(IBase usedClass)
    {
        _usedClass = usedClass;
    }

    public void Do()
    {
        _usedClass.Do();
    }
}

void Main()
{
    var context = new Context();
    var someEnum = SomeMethod();

    //how to use here DI resolve to get appropriate class instead of if/else?
    if (someEnum == MyEnum.A)
        context.SetClass(new A());
    else if (someEnum …
Run Code Online (Sandbox Code Playgroud)

.net design-patterns dependency-injection strategy-pattern autofac

3
推荐指数
1
解决办法
4222
查看次数

Angular:查找实现特定接口的所有提供者

在我的Angular(4+)应用程序中,我想创建一个基本的插件机制:

  • 扩展点定义为接口
  • 扩展实现该接口
  • 要查找所有扩展,我需要在运行时发现该接口的实现.

示例:SearchStrategy与实现的接口PersonSearchStrategyDocumentSearchStrategy(两个服务,注册为提供者).

有没有办法通过查询SearchStrategy接口的实现来动态获取这些服务的实例?怎么样?

(可能是一些与注射器相关的功能?)

strategy-pattern service-locator angular

3
推荐指数
1
解决办法
932
查看次数