设计模式-Builder
抽象工厂: 创建一个抽象类型或接口,用来封装一系列产品的变化:也就是说 这种模式针对的变化点是(一系列产品,不同风格的产品)。
public abstract class GameAbstractFactory
{
public abstract Road createRoad();
public abstract Jungle createJungle();
public abstract House createHouse()
}
{
public abstract Road createRoad();
public abstract Jungle createJungle();
public abstract House createHouse()
}
而Builder模式呢,主要针对的变化点是: 某 一部分变化. 假如我要建一所房子(房子由window,floor,ceiling,etc),但是你想改变的某一个window/floor/Ceiling。那你可以用Builder模式来解决
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
public abstract class Builder
{
public abstract void builderDoor();
public abstract void builderwindows();
public abstract void builderFloor();
public abstract House GetHouse();
}
public class BuilderManager
{
private static Builder _builder;
public BuilderManager(Builder builder)
{
_builder = builder;
}
public static House createHouse()
{
_builder.builderDoor();
_builder.builderFloor();
_builder.builderwindows();
return _builder.GetHouse();
}
}
{
public abstract void builderDoor();
public abstract void builderwindows();
public abstract void builderFloor();
public abstract House GetHouse();
}
public class BuilderManager
{
private static Builder _builder;
public BuilderManager(Builder builder)
{
_builder = builder;
}
public static House createHouse()
{
_builder.builderDoor();
_builder.builderFloor();
_builder.builderwindows();
return _builder.GetHouse();
}
}
我觉得它吧创建房子的过程封装了, 客户端不需要知道房子是怎么创建的而只要知道返回的是房子类型。