|
|
| |
|
| |
| |
设计模式之C#实现(一)--AbstractFactory(补) |
|
|
|
|
|
|
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; } } } namespace Maze{ using System.Collections; public class MapSite{ public virtual void Enter(){} } public enum Direction {North,South,East,West} public class Room : MapSite{ public string Print(){ string result = ""; for(int i = 0 ;i |
|
|
|
| | |
|