软构实验lab3过程遇到的几个问题及其学习理解

一、java的Map是否重写了hashCode和equals

答:重写了。自己实验或是根据网上的经验,均表明重写了。

二、java的Calendar/Date如何深拷贝

newDate.setTime(oldDate.getTime());

三、Decorate设计模式

以本次实验对Vote的包装为例。

  1. 先将Vote抽象出一个接口VoteInterface,其含有三个方法,getVoteItems, getDate和candidateIncluded。然后让Vote去implements这个接口。
  2. 创建一个基础的装饰类VoteDecorator,设为abstract class,实现了VoteInterface接口。里面有一个vote,能通过委托实现Vote的基本功能。此外,该装饰类还添加了后续装饰其所需要的基本功能,例如getVoter等。
  3. 创建两个VoteDecorator的子类,即实际时使用的装饰类,分别为匿名的和非匿名的。

四、visitor模式

此处也是以实验中为Poll增加visitor为例。

  1. 新建Visitable.java文件,里面放着Visitable接口,该接口只有一个方法,即void accept(Visitor visitor),该接口用于给实现它的类扩展出一个接受visitor的端口。
  2. 新建Visitor.java,里面放着Visitor接口,其中有三个visit函数,互为重载关系,它们的参数分别为那三个应用类。此外,该Visitor还有一个getRecentResult方法,返回最近访问处理得出的结果,返回类型为Object。
  3. 新建CalLegalVoteRateVisitor.java,里面存访Visitor的一个具体实现类,该类的功能是计算并输出(打印)合法选票的比例。
  4. 在Poll类中,extends Visitable接口。然后在三个应用类中实现该接口,实现方式均为visitor.visit(this)。
  5. 最后具体实现CalLegalVoteRateVisitor。

五、策略模式

  1. 创建策略类接口
  2. 新建几个子类,分别implements该接口。在子类中实现具体算法。
  3. 要使用该策略的类实例合适的策略子类,然后直接委托调用算法即可,不必在原类中使用,还可以灵活变换。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值