zoukankan      html  css  js  c++  java
  • 访问者模式

    代码
    using System;
    using System.Collections;
    using System.Collections.Generic;

    abstract class Action
    {
        
    public abstract void GetManConclusion(Man man);
        
    public abstract void GetWomanConclusion(Woman woman);
    }

    class Success:Action
    {
        
    public override void GetManConclusion(Man man)
        {
            Console.WriteLine(
    "{0}{1}时,背后多半有一个伟大的女人。", man.GetType().Name, this.GetType().Name);
        }
        
        
    public override void GetWomanConclusion(Woman woman)
        {
            Console.WriteLine(
    "{0}{1}时,背后多半有一个伟大的女人。", woman.GetType().Name, this.GetType().Name);
        }
    }



    abstract class Person
    {
        
    public abstract void Accept(Action action);
    }

    class Woman:Person
    {
        
    public override void Accept(Action action)
        {
            action.GetWomanConclusion(
    this);
        }
    }
    class Man:Person
    {
        
    public override void Accept(Action action)
        {
            action.GetManConclusion(
    this);
        }
    }

    class ObjectStructure
    {
        
    private IList<Person> elements=new List<Person>();
        
        
    public void Add(Person element)
        {
            elements.Add(element);
        }
        
        
    public void Detach(Person element)
        {
            elements.Remove(element);
        }
        
        
    public void Display(Action voisitor)
        {
            
    foreach(Person e in elements)
            {
                e.Accept(voisitor);
            }
        }
    }



    public class MyClass
    {
        
    public static void Main()
        {
            ObjectStructure o
    =new ObjectStructure();
            o.Add(
    new Man());
            
            Success v1
    =new Success();
            o.Display(v1);
            
            Console.ReadLine();
        }
    }


  • 相关阅读:
    js数组根据对象中的元素(相同的属性值)去重
    nginx设置add_header 跨域依旧失败解决
    canvas前端压缩图片和视频首屏缩略图并上传到服务器
    纯前端下载文件的方法
    vue多文件上传进度条 进度不更新问题
    jquery中attr和prop的区别
    为什么我认为数据结构与算法对前端开发很重要?
    CSS2.0实现面包屑
    Vue是如何渲染页面的,渲染过程以及原理代码
    js 事件驱动原理
  • 原文地址:https://www.cnblogs.com/mikechang/p/1712634.html
Copyright © 2011-2022 走看看