抽象工厂设计模式
抽象工厂设计模式
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(); } }