GOF书中的例子用C#实现的源码:
using System;
namespace AbstractFactory_Maze{
using Maze;
public interface AbstractFactory{
MazeClass MakeMaze();
Wall MakeWall();
Room MakeRoom(int n);
Door MakeDoor(Room oneRoom,Room otherRoom);
}
public class MazeFactory : AbstractFactory{
public MazeClass MakeMaze(){
return new MazeClass();
}
public Wall MakeWall(){
return new Wall();
}
public Room MakeRoom(int n){
return new Room(n);
}
public Door MakeDoor(Room oneRoom,Room otherRoom){
return new Door(oneRoom,otherRoom);
}
}
// this is a client
public class MazeGame{
public MazeClass MazeCreate(AbstractFactory factory){
MazeClass aMaze = factory.MakeMaze();
Room r1 = factory.MakeRoom(1);
Room r2 = factory.MakeRoom(2);
Door aDoor = factory.MakeDoor(r1,r2);
aMaze.AddRoom(r1);
aMaze.AddRoom(r2);
r1.SetSide(Direction.North,factory.MakeWall());
r1.SetSide(Direction.East,aDoor);
r1.SetSide(Direction.South,factory.MakeWall());
r1.SetSide(Direction.West,factory.MakeWall());
r2.SetSide(Direction.North,factory.MakeWall());
r2.SetSide(Direction.East,factory.MakeWall());
r2.SetSide(Direction.South,factory.MakeWall());
r2.SetSide(Direction.West,aDoor);
return aMaze;
}
}
}
[@more@]
设计模式之C#实现(一)--AbstractFactory之二(转)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/79548/viewspace-925306/
,如需转载,请注明出处,否则将追究法律责任。