抽象工厂设计模式

抽象工厂设计模式

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

    }

}

你可能感兴趣的:(设计模式)