打字猴:1.700471565e+09
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
1700471593
1700471594 图25-1 员工信息类图
1700471595
1700471596 这个类图还是比较简单的,我们定义每个员工都有薪水salary、名称name、性别sex这3个属性,然后提供了一个抽象方法getOtherInfo由子类进行扩展,同时通过report方法打印出每一个员工的信息,这里使用模板方法模式。我们先来看一下抽象类,如代码清单25-1所示。
1700471597
1700471598 代码清单25-1 抽象员工
1700471599
1700471600 public abstract class Employee{
1700471601
1700471602 public final static int MALE=0;//0代表是男性
1700471603
1700471604 public final static int FEMALE=1;//1代表是女性
1700471605
1700471606 //甭管是谁,都有工资
1700471607
1700471608 private String name;
1700471609
1700471610 //只要是员工那就有薪水
1700471611
1700471612 private int salary;
1700471613
1700471614 //性别很重要
[ 上一页 ]  [ :1.700471565e+09 ]  [ 下一页 ]