zoukankan      html  css  js  c++  java
  • 装饰模式个人的一些理解

    以下代码是个人对装饰模式的理解,备忘

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace TestApp.装饰
    {
        public partial class 装饰2 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Water water = new Water();
                JiaGong jiagong = new JiaGong();
                纯净水加工厂 chunjingshui = new 纯净水加工厂();
                糖水加工厂 tangshui = new 糖水加工厂();
    
                jiagong.SetComponent(water);
                chunjingshui.SetComponent(jiagong);
                tangshui.SetComponent(chunjingshui);
    
                tangshui.加工();
            }
        }
    
    
        public class Water
        {
            public virtual void 加工()
            {
                HttpContext.Current.Response.Write("<hr/>");
                HttpContext.Current.Response.Write("<br/>原始的河水,里面还有些杂质....");
            }
        }
    
        public class JiaGong : Water
        {
            private Water _waterResouce;
    
            public void SetComponent(Water water)
            {
                _waterResouce = water;
            }
    
            public override void 加工()
            {
                if (_waterResouce != null)
                {
                    _waterResouce.加工();
                }
            }
        }
    
    
        public class 纯净水加工厂 : JiaGong
        {
            public override void 加工()
            {
                HttpContext.Current.Response.Write("<hr/>");
                过滤();
                HttpContext.Current.Response.Write("<br/>现在变成了纯净数....");
                base.加工();
            }
    
            public void 过滤()
            {
                HttpContext.Current.Response.Write("<br/>河水中的杂质已过滤完毕....");
            }
        }
    
        public class 糖水加工厂 : JiaGong
        {
            public override void 加工()
            {
                HttpContext.Current.Response.Write("<hr/>");
                加糖();
                HttpContext.Current.Response.Write("<br/>糖水制作完毕....");
                base.加工();
            }
    
            public void 加糖()
            {
                HttpContext.Current.Response.Write("<br/>往水中加糖....");
            }
        }
    }

     最终运行效果图如下

  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/huangzelin/p/2830369.html
Copyright © 2011-2022 走看看