1700471574
设计模式之禅 24.5 最佳实践
1700471575
1700471576
备忘录模式是我们设计上“月光宝盒”,可以让我们回到需要的年代;是程序数据的“后悔药”,吃了它就可以返回上一个状态;是设计人员的定心丸,确保即使在最坏的情况下也能获得最近的对象状态。如果大家看懂了的话,请各位在设计的时候就不要使用数据库的临时表作为缓存备份数据了,虽然是一个简单的办法,但是它加大了数据库操作的频繁度,把压力下放到数据库了,最好的解决办法就是使用备忘录模式。
1700471577
1700471578
1700471579
1700471580
1700471582
设计模式之禅 第25章 访问者模式
1700471583
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
//性别很重要
1700471615
1700471616
private int sex;
1700471617
1700471618
//以下是简单的getter/setter
1700471619
1700471620
public String getName(){
1700471621
1700471622
return name;
[
上一页 ]
[ :1.700471573e+09 ]
[
下一页 ]