设计师模式混合状态和命令?

时间:2017-09-12 19:27:44

标签: oop design-patterns

我正在寻找一种设计模式,它可以根据应用行为的抽象主体的实现来启用函数的动态行为。

一个抽象的例子:

    interface IPlace
    {    
    }

    class Garage implements IPlace
    {
    }

    class Backyard implements IPlace
    {
    }

    class Mover
    {
        void Move(IPlace source, IPlace destination);
    }

用法示例:

    void NotMain()
    {
        IPlace garage = new Garage();
        IPlace backyard = new Backyard();
        Mover mover = new Mover();
        mover.move(garage, garage);
        mover.move(garage, backyard);
        mover.move(backyard, garage);
        mover.move(backyard, backyard);
    }

预期结果:

Mover moved an item inside the garage
Mover moved an item from the garage to the backyard
Mover moved an item from the backyard to the garage because it's raining
Mover moved an item around in the backyard

我认为答案可能是战略模式,但我不确定应该如何决定行为,因为有n ^ 2种不同的行为,其中n是IPlace接口的实现数量。也许是一个返回MoveOperation对象的工厂?

我对这类问题的最佳实践解决方案感兴趣。

1 个答案:

答案 0 :(得分:0)

这似乎不是战略设计模式的案例。这是一个简单的继承。使用' I'启动界面名称( IPlace )没有任何用途,因为它也像任何其他类型的'在实施中。

时应用策略模式
  1. 我们有一系列算法
  2. 我们希望这些可以互换 和
  3. 状态没有变化。
  4. 在上述问题中,以上都缺失了。 Place也可以是Abstract类而不是Interface,这样你就可以推送与那里所有位置相关的公共状态。