抽象工厂设计模式

抽象工厂设计模式

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();
    }
}

转载于:https://www.cnblogs.com/zhangchenliang/archive/2011/08/17/2142868.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值