您的位置:首页 > 其它

抽象工厂设计模式

2011-08-17 11:17 274 查看
抽象工厂设计模式

Client Invoke

protected void btnAbstract_Click(object sender, EventArgs e)
{
AbstractRoadFactory roadfactory ;

roadfactory = new RoadFactory1();
client c1 ;
c1 = new client(roadfactory);
lblMessage.Text += c1.Run() + "--";

roadfactory = new RoadFactory2();
c1 = new client(roadfactory);
lblMessage.Text += c1.Run() + "--";
}


Class Demo

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for AbstractClass
/// </summary>
public abstract class AbstractRoadFactory
{
public AbstractRoadFactory()
{
//
// TODO: Add constructor logic here
//
}

public abstract AbstractWhiteRoad CreateWhiteRoad();
public abstract AbstractBlackRoad CreateBlackRoad();
}

public class RoadFactory1 : AbstractRoadFactory
{
public override AbstractWhiteRoad CreateWhiteRoad()
{
return new WhiteRoad1();
}

public override AbstractBlackRoad CreateBlackRoad()
{
return new BlackRoad1();
}
}

public class RoadFactory2 : AbstractRoadFactory
{
public override AbstractWhiteRoad CreateWhiteRoad()
{
return new WhiteRoad2();
}

public override AbstractBlackRoad CreateBlackRoad()
{
return new BlackRoad2();
}
}

public abstract class AbstractWhiteRoad
{

}

public abstract class AbstractBlackRoad
{
public abstract string Run();
}

public class WhiteRoad1 : AbstractWhiteRoad
{

}

public class BlackRoad1 : AbstractBlackRoad
{
public override string Run() {
return "test black road1!";
}
}

public class WhiteRoad2 : AbstractWhiteRoad
{

}

public class BlackRoad2 : AbstractBlackRoad
{
public override string Run()
{
return "test black road2!";
}
}

public class client
{
private AbstractWhiteRoad AbstractWhiteRoad;
private AbstractBlackRoad AbstractBlackRoad;

public client(AbstractRoadFactory factory)
{
AbstractWhiteRoad = factory.CreateWhiteRoad();
AbstractBlackRoad = factory.CreateBlackRoad();
}

public string Run()
{
return AbstractBlackRoad.Run();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: