zoukankan      html  css  js  c++  java
  • 工厂方法模式在开发中的应用

    事件是这样的,我的每个页面都有一些属性,我拿其中一个属性PageTitle为例,它是一个ArrayList

    它是页面标题导航的意思,就是说它的标题用来存储一些标题导航,比如,产品列表页,它的PageTitle可能被解释为 我的网站 > 产品 > 产品列表,而其它页面的标题导航的表现形式也大同小异。

    了解的领域模式之后,现在我们再来看程序的实现:

      #region 抽象产品 (Abstract Product)
        // "Product"
        abstract class Page
        {
            public abstract string PageTitle { get; set; }
        }
        #endregion
     
        #region 具体产品(Concrete Product)
     
        class HomePage : Page
        {
            public override string PageTitle
            {
                get
                {
                    return "主页";
                }
                set
                {
                    throw new NotImplementedException();
                }
            }
        }
     
        class ProductPage : Page
        {
            public override string PageTitle
            {
                get
                {
                    return "产品页";
                }
                set
                {
                    throw new NotImplementedException();
                }
            }
        }
     
        class UserInfoPage : Page
        {
            public override string PageTitle
            {
                get
                {
                    return "用户页";
                }
                set
                {
                    throw new NotImplementedException();
                }
            }
        }
     
        #endregion
     
        #region 抽象工厂 (Abstract Factory)
        abstract class Factory
        {
            // Fields
            protected ArrayList pages = new ArrayList();
     
            /// <summary>
            /// 对外公开一个只读属性,它的写功能由子类对pages赋值提供
            /// </summary>
            public ArrayList Pages
            {
                get { return this.pages; }
            }
     
            // Constructor
            public Factory()
            {
                this.CreatePages();
            }
     
            // Factory Method
            abstract public void CreatePages();
        }
        #endregion
     
        #region 具体工厂 (Concrete Factory)
     
        class HomeFactory : Factory
        {
            // Factory Method implementation
            override public void CreatePages()
            {
                pages.Add(new HomePage().PageTitle);
                pages.Add(new ProductPage().PageTitle);
                pages.Add(new UserInfoPage().PageTitle);
            }
        }
     
        class ProductFactory : Factory
        {
            // Factory Method implementation
            override public void CreatePages()
            {
                pages.Add(new HomePage().PageTitle);
                pages.Add(new ProductPage().PageTitle);
            }
        }
     
        #endregion

    在程序中的调用如下:

    class Program
        {
            static void Main(string[] args)
            {
     
                // Note: constructors call Factory Method
                Factory factory = new ProductFactory();
                Array.ForEach(factory.Pages.ToArray(), i => Console.Write(i.ToString()+">"));
     
            }
        }
  • 相关阅读:
    smarty基础
    phpcms 内容模块PC标签调用
    phpcms v9中的$CATEGORYS栏目数组
    PHP如何实现验证码
    PHP生成一个不重复随机数组的封装方法
    简单实现php文件管理
    PHP-----作业:查询数据,在页面上显示
    PHP-----设计模式六大原则
    PHP-----静态
    PHP-----面向对象的设计模式:工厂模式例题
  • 原文地址:https://www.cnblogs.com/lori/p/2149752.html
Copyright © 2011-2022 走看看