ScriptHookDotNet中的示例:

头等舱:

public sealed class Vehicle : GTA.base.HandleObject
//Member of GTA

public abstract class HandleObject : GTA.base.Object
//Member of GTA.base

public abstract class Object
//Member of GTA.base


第二类:

public sealed class World
//Member of GTA


使用的方法:

public static GTA.Vehicle CreateVehicle(GTA.Vector3 Position)


您不能仅使用以下方法从Vehicle创建对象:

Vehicle veh = new Vehicle();


因为Vehicle没有构造函数。

但是您可以使用以下代码:

Vehicle veh = World.CreateVehicle(params);


这个怎么做的?

最佳答案

构造函数是私有的,因此它们迫使您使用特定的方法来创建实例。这称为工厂模式;在World类内部,该方法具有使用构造函数创建Vehicle的新实例的能力,但您不能这样做。

编辑:如果您想创建这种功能,那么您将执行以下操作:

public class MyPublicClass
{
    public MyPrivateClass CreateClass()
    {
         return MyPrivateClass.GetInstance();
    }
}

public class MyPrivateClass
{
    internal static MyPrivateClass GetInstance() { return new MyPrivateClass(); }

    protected MyPrivateClass() { }
}

09-30 15:32
查看更多