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();
        }
    }


  • 相关阅读:
    Docker 给 故障停掉的 container 增加 restart 参数
    使用docker化的nginx 反向代理 docker化的GSCloud 的方法
    apache benchmark 的简单安装与测试
    mysql5.7 的 user表的密码字段从 password 变成了 authentication_string
    Windows 机器上面同时安装mysql5.6 和 mysql5.7 的方法
    python4delphi 安装
    见证下神奇的时刻
    windows下面安装Python和pip终极教程
    python如何安装pip和easy_installer工具
    Tushare的安装
  • 原文地址:https://www.cnblogs.com/mikechang/p/1712634.html
Copyright © 2011-2022 走看看