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() { }
}