Factory Methods

package designPattern;

//creator
class MazeGame{
    public Maze CreateMaze()
    {
        Maze aMaze = MakeMaze();
        
        Room r1 = MakeRoom(1);
        Room r2 = MakeRoom(2);
        
        Door theDoor = MakeDoor(r1, r2);

        aMaze.AddRoom(r1);
        aMaze.AddRoom(r2);

        r1.SetSide(North, MakeWall());
        r1.SetSide(East, theDoor);
        r1.SetSide(South, MakeWall());
        r1.SetSide(West, MakeWall());
        
        r2.SetSide(North, MakeWall());
        r2.SetSide(East, MakeWall());
        r2.SetSide(South, MakeWall());
        r2.SetSide(West, theDoor);
    }
    
    //factory Methods
    public Maze MakeMaze()
    {
        return new Maze();
    }
    public Door MakeDoor(Room r1, Room r2)
    {
        return new Door(r1, r2);
    }
    public Room MakeRoom(int n)
    {
        return new Room(n);
    }
    public Wall MakeWall()
    {
        return new Wall();
    }
}

//concrete creator
class BombMazeGame extends MazeGame{
    public Wall MakeWall()
    {
        //concrete product
        return new BombWall();
    }
    public Room MakeRoom(int n)
    {
        return new BombRoom(n);
    }
}

//concrete creator
class EnhantedMazeGame extends MazeGame{
    public Wall MakeRoom(int n)
    {
        return new EnhantedRoom(n, CastSpell());
    }
    public Door MakeDoor(Room r1, Room r2){
        return new DoorNeedingSpell(r1, r2);
    }
    protected Spell CastSpell();
}

public class FactoryMethods {

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值