ITPub博客

首页 > 应用开发 > IT综合 > 设计模式之C#实现(一)--AbstractFactory之三(转)

设计模式之C#实现(一)--AbstractFactory之三(转)

原创 IT综合 作者:hphubei 时间:2007-07-08 15:05:30 0 删除 编辑
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    181
  • 访问量
    274756