当前位置: 首页 > news >正文

建设班级网站 沟通无限查公司查企业用什么软件

建设班级网站 沟通无限,查公司查企业用什么软件,免费发帖的网站,自己做的网站怎么赚钱类层次结构的变化#xff1a; 类层次结构中可能经常由于引入新的操作#xff0c;从而将类型变得脆弱... 动机#xff1a; 在软件构建过程中#xff0c;由于需求的改变#xff0c;某些类层次结构中常常需要增加新的行为(方法),如果直接…类层次结构的变化     类层次结构中可能经常由于引入新的操作从而将类型变得脆弱...                            动机     在软件构建过程中由于需求的改变某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改将会给子类带来很繁重的变更负担甚至破坏原有设计。     如何在不更改类层次结构的前提下在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作从而避免上述问题意图     表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这引起元素的新操作。结构               适用性     1.一个对象结构包含很多类对象它们有不同的接口而你想对这些对象实施一些依赖于其具体类的操作。     2.需要对一个对象结构中的对象进行很多不同的并且不相关的操作而你想避免让这些操作污染这些对象的类。Visitor使得你可以将相关的操作集中起来定义在一个类中。当该对象结构被很多应用共享时用Visitor模式让每个应用仅包含需要用到的操作。     3.定义对象结构的类很少改变但经常需要在结构上定义新的操作。改变对象结构类需要重定义对所有访问者的接口这可能需要很大的代价。如果对象结构类经常改变那么可能还是在这些类中定义这些操作较好。代码实现      1 // MainApp startup application   2    3   class MainApp   4   {   5     static void Main()   6     {   7       // Setup employee collection   8       Employees e  new Employees();   9       e.Attach(new Clerk());  10       e.Attach(new Director());  11       e.Attach(new President());  12   13       // Employees are visited  14       e.Accept(new IncomeVisitor());  15       e.Accept(new VacationVisitor());  16   17       // Wait for user  18       Console.Read();  19     }  20   }  21   22   // Visitor  23   24   interface IVisitor  25   {  26     void Visit(Element element);  27   }  28   29   // ConcreteVisitor1  30   31   class IncomeVisitor : IVisitor  32   {  33     public void Visit(Element element)  34     {  35       Employee employee  element as Employee;  36   37       // Provide 10% pay raise  38       employee.Income * 1.10;  39       Console.WriteLine({0} {1}s new income: {2:C},  40         employee.GetType().Name, employee.Name,  41         employee.Income);  42     }  43   }  44   45   // ConcreteVisitor2  46   47   class VacationVisitor : IVisitor  48   {  49     public void Visit(Element element)  50     {  51       Employee employee  element as Employee;  52         53       // Provide 3 extra vacation days  54       Console.WriteLine({0} {1}s new vacation days: {2},  55         employee.GetType().Name, employee.Name,  56         employee.VacationDays);  57     }  58   }  59   60   class Clerk : Employee  61   {  62     // Constructor  63     public Clerk() : base(Hank, 25000.0, 14)  64     {  65     }  66   }  67   68   class Director : Employee  69   {  70     // Constructor  71     public Director() : base(Elly, 35000.0, 16)  72     {    73     }  74   }  75   76   class President : Employee  77   {  78     // Constructor  79     public President() : base(Dick, 45000.0, 21)  80     {    81     }  82   }  83   84   // Element  85   86   abstract class Element  87   {  88     public abstract void Accept(IVisitor visitor);  89   }  90   91   // ConcreteElement  92   93   class Employee : Element  94   {  95     string name;  96     double income;  97     int vacationDays;  98   99     // Constructor 100     public Employee(string name, double income, 101       int vacationDays) 102     { 103       this.name  name; 104       this.income  income; 105       this.vacationDays  vacationDays; 106     } 107  108     // Properties 109     public string Name 110     { 111       get{ return name; } 112       set{ name  value; } 113     } 114  115     public double Income 116     { 117       get{ return income; } 118       set{ income  value; } 119     } 120  121     public int VacationDays 122     { 123       get{ return vacationDays; } 124       set{ vacationDays  value; } 125     } 126  127     public override void Accept(IVisitor visitor) 128     { 129       visitor.Visit(this); 130     } 131   } 132  133   // ObjectStructure 134  135   class Employees 136   { 137     private ArrayList employees  new ArrayList(); 138  139     public void Attach(Employee employee) 140     { 141       employees.Add(employee); 142     } 143  144     public void Detach(Employee employee) 145     { 146       employees.Remove(employee); 147     } 148  149     public void Accept(IVisitor visitor) 150     { 151       foreach (Employee e in employees) 152       { 153         e.Accept(visitor); 154       } 155       Console.WriteLine(); 156     } 157   } 运行结果        Visoitr模式的几个要点     1.Visitor模式通过所谓双重分发(double dispatch)来实现在不更改Element类层次结构的前提下在运行时透明地为类层次结构上的各个类动态添加新的操作。     2.所谓双重分发却Visotor模式中间包括了两个多态分发注意其中的多态机制);第一个为accept方法的多态辨析;第二个为visitor方法的多态辨析。     3.Visotor模式的最大缺点在于扩展类层次结构(增添新的Element子类会导致Visitor类的改变。因此Visiotr模式适用Element类层次结构稳定而其中的操作却经常面临频繁改动.
http://www.zqtcl.cn/news/869917/

相关文章:

  • 网站建设合作网络营销是什么模式
  • 做个网站怎样做的网站建设刂搜金手指下拉贰肆
  • 颍上网站建设个人租车网站源码
  • 建设银行海外招聘网站顺义公司建站多少钱
  • 医疗公司网站建设项目背景你做的网站可视区域多少钱
  • 韩国做暖暖网站怎么样自己建设一个网站
  • 徐州网站建设4禁止wordpress历史版本
  • 公司网站建设价格wordpress做排行榜单
  • 安徽网站推广营销设计请教个人主页网站怎么做啊
  • 甘肃省酒泉市做网站公司wordpress标签云代码
  • 淘宝客做网站备注怎么写的用手机做网站视频
  • 深圳专业网站建设制作价格低品牌网站建设网站
  • 织梦体育网站模板临沂建站程序
  • 重庆网站设计最佳科技好听的网络公司名字
  • 如何在人力资源网站做合同续签贵阳网站建设搜王道下拉
  • 多个域名的网站北京注册公司流程
  • 网站建站对象定制网站系统
  • 阳光家园广州网站网站公司怎么做的好
  • wordpress网站音乐放不全阳山做网站
  • 橙色企业网站源码网站下载软件
  • 满足客户的分销管理系统seo搜索引擎优化技术教程
  • 链接网站制作住房建设部官方网站专家注册
  • 北京保障性住房建设投资中心网站以网络营销为主题的论文
  • 数字火币交易网站开发网站建设设计图图片
  • 惠民建设局网站东莞公司建设网站
  • 网站建设与维护教学课件煤炭网站建设规划书
  • 北京建设网站有哪些公司黄陌陌网站怎么做
  • 视频网页制作教程网站优化防范
  • 做优化网站注意什么开发者模式开着好不好
  • 网站顾客评价网站中怎么做网站统计