在游戏场景中,不可能只有一种墙或屋子,有可能有现代风格(Modern),古典风格(Classical)等多系列风格的部件。这时就是一系列对象的创建问题了,是一个抽象工厂的例子。解决的是“系列对象”的需求变化问题。

示例代码:
using System;
![]()
![]()
![]()
public abstract class Wall
![]()
{
![]()
public abstract void Display();
![]()
}
![]()
![]()
![]()
public class ModernWall:Wall
![]()
{
![]()
public override void Display()
![]()
{
![]()
Console.WriteLine("ModernWall Builded");
![]()
}
![]()
}
![]()
![]()
![]()
public class ClassicalWall:Wall
![]()
{
![]()
public override void Display()
![]()
{
![]()
Console.WriteLine("ClassicalWall Builded");
![]()
}
![]()
}
![]()
![]()
![]()
public abstract class Room
![]()
{
![]()
public abstract void Display();
![]()
}
![]()
![]()
![]()
public class ModernRoom:Room
![]()
{
![]()
public override void Display()
![]()
{
![]()
Console.WriteLine("ModernRoom Builded");
![]()
}
![]()
}
![]()
![]()
![]()
public class ClassicalRoom:Room
![]()
{
![]()
public override void Display()
![]()
{
![]()
Console.WriteLine("ClassicalRoom Builded");
![]()
}
![]()
}
![]()
![]()
![]()
public abstract class AbstractFactory
![]()
{
![]()
public abstract Wall CreateWall();
![]()
public abstract Room CreateRoom();
![]()
}
![]()
![]()
![]()
public class ModernFactory:AbstractFactory
![]()
{
![]()
public override Wall CreateWall()
![]()
{
![]()
return new ModernWall();
![]()
}
![]()
public override Room CreateRoom()
![]()
{
![]()
return new ModernRoom();
![]()
}
![]()
}
![]()
![]()
![]()
public class ClassicalFactory:AbstractFactory
![]()
{
![]()
public override Wall CreateWall()
![]()
{
![]()
return new ClassicalWall();
![]()
}
![]()
public override Room CreateRoom()
![]()
{
![]()
return new ClassicalRoom();
![]()
}
![]()
}
![]()