zoukankan      html  css  js  c++  java
  • 抽象工厂设计模式

    抽象工厂设计模式

    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();
        }
    }
    
  • 相关阅读:
    iptables关键学习总结
    iptables关键学习总结
    .net中操作Visual SourceSafe
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2142868.html
Copyright © 2011-2022 走看看