打字猴:1.700471543e+09
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
1700471573 设计模式之禅 [:1700454035]
1700471574 设计模式之禅 24.5 最佳实践
1700471575
1700471576 备忘录模式是我们设计上“月光宝盒”,可以让我们回到需要的年代;是程序数据的“后悔药”,吃了它就可以返回上一个状态;是设计人员的定心丸,确保即使在最坏的情况下也能获得最近的对象状态。如果大家看懂了的话,请各位在设计的时候就不要使用数据库的临时表作为缓存备份数据了,虽然是一个简单的办法,但是它加大了数据库操作的频繁度,把压力下放到数据库了,最好的解决办法就是使用备忘录模式。
1700471577
1700471578
1700471579
1700471580
1700471581 设计模式之禅 [:1700454036]
1700471582 设计模式之禅 第25章 访问者模式
1700471583
1700471584 设计模式之禅 [:1700454037]
1700471585 25.1 员工的隐私何在
1700471586
1700471587 我们在前面讲过了组合模式和迭代器模式。通过组合模式能够把一个公司的人员组织机构树搭建起来,给管理带来非常大的便利,通过迭代器模式把每一个员工都遍历一遍,看看是不是“有人去世了还在领退休金”,“拿高工资而不干活的尸位素餐”等情况,我们今天要做的就是把这些情况统计成一个报表呈报上去,让领导看看这种恶劣的情况有多严重。
1700471588
1700471589 我们公司有700名多技术人员,分布在全国各地,组织架构在组合模式中已经介绍过了,是很常见的家长领导型模式,每个技术人员的岗位都是固定的,你在组织机构的哪棵树下,充当的角色是什么,叶子节点都是非常明确的,每一个员工的信息(如名字、性别、薪水等)都是记录在数据库中,现在有这样一个需求,我要把公司中的所有人员信息都打印汇报上去。我们来看类图,如图25-1所示。
1700471590
1700471591
1700471592
[ 上一页 ]  [ :1.700471543e+09 ]  [ 下一页 ]