第一次接触设计模式,感觉设计模式好难啊,用起来好麻烦,类图代码什么的都看不懂。第二次接触设计模式是重构时,用到了抽象工厂、外观、模板等,还用到了反射的技术,敲完代码发现设计模式也不是很难用,类图代码也都能看懂了。合作这次算是第三次了,又添加了很多新的设计模式,以前用过的还都好说,实现起来也不难,难就难在那些没用过的。
机房合作不能再像以前似的,这次必须是得先画图才能敲代码。对于那些没有用过的设计模式,不知道代码实现,图画起来还真是特别难。
在合作中,我们主要用到的设计模式是,观察者实现下机前的验证,职责链计算消费时间,策略加简单工厂计算消费金额,状态模式实现上机前的验证,装饰模式实现权限验证。下面就晒晒我们画的类图:
观察者:
观察者模式在这里的使用是,抽象出一个抽象的主题对象,用它来做下机前的验证。一直以为观察者是哪个所谓的前台,现在才发现,观察者其实是那些员工,观察者们通过观察主题对象的状态改变进而做出改变。在图中添加了三个观察者,一是是否存在的验证,二是是否已退卡的验证,三是是否正在上机的验证。一旦主题对象发生状态改变,也就是下机,就让三个观察者做出改变。
职责链:
职责链模式在这里是用来计算消费时间,它本身的用法是关乎能力,如果发生的事不在它的能力范围之内,它则自动传给下一个对象来解决。在这里,三种时间就是三个对象,如果上机时间小于准备时间,或者大于准备时间小于最小上机时间,或者大于最少上机时间,一个对象不能解决问题则自动交给下一个对象。
策略加简单工厂:
策略模式其实就是封装的不同算法,每种策略就是每种算法。在这里,我们的消费金额分为两种算法,一个是固定用户,一个是临时用户。不同的卡类型单位时间费用不同,所以消费金额的算法也不同。简单工厂的功能是把分支封装起来,或者说是将判断语句从U层挪到B层,让用户用起来更简单。
状态:
状态模式同样是状态发生改变之后会引起那些事情的发生,上机时,卡的状态发生改变,进而就会引起各种验证。
装饰:
装饰模式在这里是用来做权限验证的,也就是登录的用户权限是什么就显示相应的主界面。定义一个用户,如果它是一般用户,则装饰主界面的一个菜单栏,如果是操作员,则显示两个,如果是管理员则显示三个。
这些就是这些设计模式在系统中的应用,设计模式的使用肯定不止这些,希望读者可以给出我们更好地建议。