如何确保方法按正确顺序执行?

Dam*_*ian 3 design-patterns pseudocode

我总是有问题设计一个类,其中正确的方法调用对于程序员来说是清楚的,并且在数据之前没有执行某些方法的危险,变量是由其他方法设置的.所以我通常使用flags和If语句来保证安全:

class foo {
    boolean isInitialised = FALSE;
    boolean isSthDone = FALSE;
    float importantData;

    public void initialise {

        ...

        isInitialised = TRUE;
    }

    public void doSth1 { 

      if (isInitialised) {

         importantData = 2134234; 

         }   ...

          isSthDone = TRUE;

    }

    public void doSth2 { 

        if (isInitialised && isSthDone1) {

            ...

          }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种设计没有提供任何线索,应该如何使用算法 - 首先应该执行哪种方法,这个问题是否有任何设计模式?

D. *_*ert 8

考虑一下这些步骤的独立执行是否真的有意义.如果该类的使用者真的必须按照该顺序执行步骤1,步骤2和步骤3,那么只需将它们折叠成一个公共方法并封装您的类中的步骤.

另一方面,如果消费者在哪种顺序中确实存在选择,那么您就会遇到状态转换问题,并且您需要了解步骤的合法顺序.


Dav*_*vid 6

您应该在构造函数中进行必要的初始化 - 初始化正是构造函数的用途.根据您使用的语言,它可能如下所示:

Class foo{

  public: 
  foo(){
    a = 1;
    b = "something";
  }

   int a;
   string b;

}
Run Code Online (Sandbox Code Playgroud)

  • 有时候任何标准方法都是不合适的.在他的问题(也就是说,"几乎总是")的上下文中,构造函数是他应该进行初始化的地方. (6认同)