alonestarsz

博客园 首页 新随笔 联系 订阅 管理
using System;

namespace Builder.BuilderFolder
{
    
/// <summary>
    
/// HouseBuilder 的摘要说明。
    
/// 它定义如何创建复杂对象的各个部件
    
/// 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
    
/// 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 
    
/// 当构造过程必须允许被构造的对象有不同的表示时。
    
/// </summary>

    public abstract class HouseBuilder
    
{
        
/// <summary>
        
/// 创建房间编号
        
/// </summary>
        
/// <param name="roomNum">房间编号</param>

        public abstract void BuilderRoom(int roomNum) ;


        
/// <summary>
        
/// 创建房门
        
/// </summary>
        
/// <param name="roomNum1">房间1</param>
        
/// <param name="roomNum2">房间2</param>

        public abstract void BuilderDoor(int roomNum1, int roomNum2);


        
/// <summary>
        
/// 取得房间
        
/// </summary>
        
/// <returns></returns>

        public abstract House getHouse() ;
    }

    
    
/// <summary>
    
/// Builder的具体实现ConcreteBuilder:
    
///通过具体完成接口Builder来构建或装配产品的部件
    
/// </summary>

    public class ConcreteHouseBuilder :HouseBuilder
    
{
        
private House house;
        
public ConcreteHouseBuilder()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
            house = new House();
        }


        
public override void BuilderRoom(int roomNum)
        
{
            house.RoomNum
++;
        }

        
        
public override void BuilderDoor(int roomNum1, int roomNum2)
        
{
            house.DoorNum 
++;
        }


        
public override House getHouse()
        
{
            
return house;
        }


    }

    
    
/// <summary>
    
/// 实现构建对象过程
    
/// </summary>

    public class HouseDirector
    
{
        
public HouseDirector()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }



        
public void CreateHouse(HouseBuilder concreateBuilder) 
        
{
            concreateBuilder.BuilderRoom(
1);
            concreateBuilder.BuilderRoom(
2);
            concreateBuilder.BuilderDoor(
1,2);
            
        }

    }

    
        
/// <summary>
    
/// 构建实体定义
    
/// </summary>

    public class House
    
{

        
私有变量

        
共有属性 
        
public House()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
            this.roomNum = 0;
            
this.doorNum = 0;
        }

    }

    
    
//一下为测试代码
    
    
/// <summary>
    
/// Class1 的摘要说明。
    
/// </summary>

    class Class1
    
{
        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main(string[] args)
        
{
            
//
            
// TODO: 在此处添加代码以启动应用程序
            
//
            House house = new House();
            ConcreteHouseBuilder chb 
= new ConcreteHouseBuilder();
            HouseDirector hd 
= new HouseDirector();
            hd.CreateHouse(chb);
            house 
=chb.getHouse();
            
            System.Console.WriteLine (
"My house has room :" + house.RoomNum );
            System.Console.WriteLine(
"My house has door :" + house.DoorNum );
            Console.ReadLine();
        }

    }

}

posted on 2004-11-19 16:33  天煞孤星  阅读(601)  评论(0编辑  收藏  举报