Methods 静态方法使用

Methods 静态方法使用,methods,static,Methods,Static,如果我有一个静态方法,唯一的优点是我们只有一个副本。不需要有一个对象来调用该方法。创建一个对象也可以做到这一点,即我们可以用对象调用方法。为什么我们要用静态方法。有人能提供一个例子来解释吗?当您有私有构造函数时,静态方法会很有用,因为您希望抽象实例化过程 例如,在C++中: class Foo { Foo() {} public: static Foo *create() { return new Foo; } }; 在该示例中,抽象只是调用了一个可访问的构造函数,但实际上

如果我有一个静态方法,唯一的优点是我们只有一个副本。不需要有一个对象来调用该方法。创建一个对象也可以做到这一点,即我们可以用对象调用方法。为什么我们要用静态方法。有人能提供一个例子来解释吗?

当您有私有构造函数时,静态方法会很有用,因为您希望抽象实例化过程

例如,在C++中:

class Foo {
  Foo() {}
public:
  static Foo *create() {
    return new Foo;
  }
};
在该示例中,抽象只是调用了一个可访问的构造函数,但实际上,您可能希望有一个共享的对象池,因此
create()
方法将为您管理这个对象池


有时,当您有需要在构造时初始化的const成员时,将其逻辑移动到
private
静态方法中可能会更干净,例如:

struct Foo;

struct Bar {
  Bar() : f(make()) {
  }

private:
  const Foo f;

  static Foo make() {
    // Create it here
  }
};

当开发人员确实确定该方法在类中只有一个实例时,使用静态方法。没有其他实例可以改变这一点。 例如:

因此,即使您是对象人的实例,getvalue静态方法的返回也只会产生x+3。 它通常用于当你真的确定要做一个函数方法,比如数学或物理方法。 您可以参考使用静态观点的函数式编程

一些老派的人过度使用静态方法而不是OOP方法

例如:

上面的实现可以是数千行

这种风格随处可见,使其像OOP风格(因为它发生在类中),但像过程方法一样思考。 这是一个帮助,因为不是所有人都理解OOP风格,而不是喜欢OOP风格

使用static的另一个优点是节省内存占用,而且速度更快。 您可以在博客中看到:

  public class People
  {
      private
      public static Int32 GetValue(Int x)
      {
          return x + 3;
      }
  }
public class People
{
    public static DataSet GetPeopleById(String personId)
    {  .... implementation that using SQL query or stored procedure and return dataset ... }

    public static DataSet GetXXXXXXX(String name, DateTime datex)
    { .... implementation ... }
}