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();
        }
    }
    
  • 相关阅读:
    优化后的组合算法
    Android之——AsyncTask和Handler对照
    LeetCode(30) Substring with Concatenation of All Words
    HDU--1054--Strategic Game【最小点覆盖】
    最小生成树模板(poj3625)
    QT中使用高速排序
    走进APICloud的世界 (1)
    layer,一个可以让你想到即可做到的javascript弹窗(层)解决方案
    解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
    移动端H5的一些基本知识点总结
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2142868.html
Copyright © 2011-2022 走看看