我在X游戏接入平台中使用了模板方法模式,场景:研发的游戏需要推向不同的渠道,每个渠道的用户登录和充值接口的实现都不太一样,而X游戏平台作为一个游戏接入不同渠道的服务平台需要保证游戏接入的一致性,以及消除到不同渠道的差异性。
- 固定了游戏接入的流程:都有登录,充值接入;
- 解耦了协议和实现:每个渠道按照对应的对接协议差别的接入,在上层抹掉差差异。
- 扩展性更好;可以轻松的增加新渠道;
- 可以更灵活处理游戏接入;
我在优化登录代码的过程中,使用了观察者模式。比如可以使用Spring的事件机制或者guava提供的EventBus;
之前的登录代码是面条式的,一行代码处理一个对应的逻辑,比如,登录完成之后,记录日志,通知积分服务增加积分,通知统计服务增加登录次数,变更日活;
使用观者模式之后,发一个登录成功的消息,在监听者中处理不同的逻辑操作。简化了代码,可维护性,可扩展性得到了提高。
jdk中用到的设计模式盘点
装饰器模式:http://java.io中的流处理;
建造者模式:Http2/client的构建;
单例模式: Runtime类, 单例模式主要在高并发的情况下,需要加入双检锁,或者直接使用枚举单例的方式。
spring中常用设计模式盘点
工厂模式: BeanFactory, ApplicationContext中的对象创建;
观察者模式: 各种事件的发布和通知
模板模式: JdbcTemplate
AOP: 综合了代理,装饰器,适配器模式