载入中...

Google
 
 
载入中...
时 间 记 忆
载入中...
最 新 评 论
专 题 分 类
载入中...
最 新 日 志
载入中...
最 新 留 言
载入中...
搜 索
用 户 登 录
载入中...
友 情 连 接
博 客 信 息
载入中...


 
 
载入中...
   
 
 

设计模式之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
 
 
发表评论:
载入中...
 
     
   
     
Powered by Oblog.