你会选择什么设计模式?

Mem*_*eak 5 c# java design-patterns class

我想设计一个类,其中包含一个实现目标的过程.它必须遵循一些顺序,以确保最后一个方法,让我们说"ExecuteIt",以正确行事.在这种情况下,你会使用什么设计模式?这可以确保用户必须按照某种顺序调用公共方法.

如果你真的不知道我在说什么,那么你能否分享一些选择设计模式的概念,或者你在设计课程时会考虑什么?

Ode*_*ded 6

我相信你正在寻找这种Template Method模式.


lui*_*nal 4

模板方法就是你想要的。它是最古老的之一,只是一种编写类的方式的形式化。

http://en.wikipedia.org/wiki/Template_method_pattern

或者如以下代码示例所示:

abstract class AbstractParent // this is the template class
{
    // this is the template method that enforces an order of method execution
   final void executeIt()
   {
     doBefore(); // << to be implemented by subclasses
     doInTheMiddle() // also to be implemented by subclasses
     doLast(); // << the one you want to make sure gets executed last
   }

   abstract void doBefore();
   abstract void doInTheMiddle();
   final void doLast(){ .... }
}

class SubA extends AbstractParent
{
   void doBefore(){ ... does something ...}
   void doInTheMiddle(){ ... does something ...}
}

class SubB extends SubA
{
   void doBefore(){ ... does something different ...}
}
Run Code Online (Sandbox Code Playgroud)

但您似乎正在寻找使用模式的机会,而不是使用模式来解决特定类型的问题。这只会导致你养成不良的软件开发习惯。

不要考虑模式。考虑一下如果没有模式,您将如何解决该特定问题。

想象一下没有编码模式(以前​​就是这样)。您将如何完成您想要做的事情(这就是人们为解决此类问题所做的事情。)当您可以做到这一点时,您将能够更好地理解模式。

不要将它们用作饼干切割器。这是你最不想做的事。

  • 我需要澄清这一点 - 我并不是说模式毫无用处。在可重用性和组合方面,它们是计算机科学提出的最好的东西之一。然而,它要求您了解组合、继承和多态性本身(以及在较小程度上了解内聚和耦合等概念)。知道如何有效使用模式的人知道如何提出解决方案严格基于上述概念。模式为您提供了记录的结构,但您需要先有坚实的基础才能使用它们。 (2认同)