1700471523
1700471524
private void setState(String state){
1700471525
1700471526
this.state=state;
1700471527
1700471528
}
1700471529
1700471530
}
1700471531
1700471532
}
1700471533
1700471534
内置类Memento全部是private的访问权限,也就是说除了发起人外,别人休想访问到,那如果要产生关联关系又应如何处理呢?通过接口!别忘记了我们还有一个空接口是公共的访问权限,如代码清单24-23所示。
1700471535
1700471536
代码清单24-23 备忘录的空接口
1700471537
1700471538
public interface IMemento{
1700471539
1700471540
}
1700471541
1700471542
我们再来看管理者,如代码清单24-24所示。
1700471543
1700471544
代码清单24-24 备忘录管理者
1700471545
1700471546
public class Caretaker{
1700471547
1700471548
//备忘录对象
1700471549
1700471550
private IMemento memento;
1700471551
1700471552
public IMemento getMemento(){
1700471553
1700471554
return memento;
1700471555
1700471556
}
1700471557
1700471558
public void setMemento(IMemento memento){
1700471559
1700471560
this.memento=memento;
1700471561
1700471562
}
1700471563
1700471564
}
1700471565
1700471566
全部通过接口访问,这当然没有问题,如果你想访问它的属性那是肯定不行的。但是安全是相对的,没有绝对的安全,可以使用refelect反射修改Memento的数据。
1700471567
1700471568
在这里我们使用了一个新的设计方法:双接口设计,我们的一个类可以实现多个接口,在系统设计时,如果考虑对象的安全问题,则可以提供两个接口,一个是业务的正常接口,实现必要的业务逻辑,叫做宽接口;另外一个接口是一个空接口,什么方法都没有,其目的是提供给子系统外的模块访问,比如容器对象,这个叫做窄接口,由于窄接口中没有提供任何操纵数据的方法,因此相对来说比较安全。
1700471569
1700471570
1700471571
1700471572
[
上一页 ]
[ :1.700471523e+09 ]
[
下一页 ]