软构visitor、decorator,iterator大题解题思路

题目背景:HIT软构2019大题

1.visitor

在不改变特定类型代码的基础上对特定类型object进行特定操作

例:要在ParkingField对象中新增一个方法(ParkingField主体已完成,pf为构造出来的对象)

(1)ParkingField中程序如下:pf.accpt(new CalculateRatioVisitor) (pf.accept 需要新增接口和实现,new的CalculateRatioVisitor要求新增接口和类)

(2)新增接口,其中只有一个方法:double visit(ParkingField pf)。再新增一个类实现此接口,并且具体实现这个visit方法

(3)在ParkingField接口中加入方法accept(上一个新增的接口 v),在上一个接口的实现代码中实现这个方法:return v.visit(this)

2.decorator

为对象增加不同侧面的特性,通过委托机制增加到对象上(多个特性叠加需要用递归思维)

例:在已有对象ParkingField基础上新增一个field:String company;新增功能特性:parking方法中最后打印欢迎信息

(1)新增抽象类,实现ParkingField接口,其中加入一个field:ConcreteParkingField pf;

(2)新增一个类,继承上一个抽象类,其中加入新的field:String company

其中constructer为:this.pf = pf; this.company = company;

其它方法中只需重写parking方法:pf.parking(c,num); system.out.println("Welcome");

3.Iterator

迭代器,略

例: 设计一个能逐个读取car类型的迭代器

  (1)新增一个Iterable<car>接口,其中实现iterator()方法:方法返回new ParkingFieldIterrator()

  (2)增加内部类ParkingFieldIterator继承上述接口,在其中实现hasNext(),next等方法

  (3)具体应用:Iterator<Car> iterator = pf.iterator();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值