在父抽象类中定义一个Build方法,并在子类中重写该方法来实现构建实例的具体逻辑。这样就可以避免子类实例无法使用父抽象类方法的问题。
示例代码:
// 父抽象类
abstract class CarBuilder
{
protected Car car;
public void CreateCar()
{
car = new Car();
}
public abstract void SetModel();
public abstract void SetEngine();
// Build方法实现实例构建逻辑
public Car Build()
{
CreateCar();
SetModel();
SetEngine();
return car;
}
}
// 子类
class JeepBuilder : CarBuilder
{
public override void SetModel()
{
car.Model = "Jeep";
}
public override void SetEngine()
{
car.Engine = "V8";
}
}
// 客户端代码
class Client
{
public void Construct()
{
CarBuilder builder = new JeepBuilder();
Car car = builder.Build();
}
}