zoukankan      html  css  js  c++  java
  • C# 设计模式(10)装饰器模式

    装饰器模式

    1.继承+组合

    2. AOP编程思想的一种实现

    代码实现:

    员工:

    namespace DecoratorPattern
    {
        public abstract class AbstractEmployee
        {
            public int Id { get; set; }
            public string Name { get; set; }
    
            public abstract void Work();
        }
        public class Employee : AbstractEmployee
        {
            public override void Work()
            {
                Console.WriteLine($"{this.GetType().Name} 上班八小时.");
            }
        }
    }
    

    装饰器:

    namespace DecoratorPattern.Decorator
    {
        public class BaseEmployeeDecorator:AbstractEmployee
        {
            private readonly AbstractEmployee _employee;
    
            public BaseEmployeeDecorator(AbstractEmployee employee)
            {
                _employee = employee;
            }
            public override void Work()
            {
                _employee.Work();
            }
        }
        public class EmployeeSoftwareDecorator:BaseEmployeeDecorator
        {
            private readonly AbstractEmployee _employee;
    
            public EmployeeSoftwareDecorator(AbstractEmployee employee) : base(employee)
            {
                _employee = employee;
            }
    
            public override void Work()
            {
                _employee.Work();
                Console.WriteLine($"{this.GetType().Name} 留下来加个班.");
            }
        }
    }
    

    代码调用:

        class Program
        {
            static void Main(string[] args)
            {
               AbstractEmployee  employee = new Employee() { Id = 101, Name = "Alex" };
               employee = new EmployeeSoftwareDecorator(employee);
               employee.Work();
            }
        }
    

    结果:

  • 相关阅读:
    java获得两个日期之间的所有月份
    Java设计模式之观察者模式
    SpringMVC项目配置
    Java设计模式之策略模式
    Tomcat源码
    线程池
    java内存模型
    JVM内存结构 JVM的类加载机制
    java虚拟机-垃圾回收算法
    并发容器-ConcurrentHashMap,CopyOnWriteArrayList
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14078058.html
Copyright © 2011-2022 走看看