摘要: 1、目标 2、关键思想 1)、映射(Mapping) 2)、对象标识(object identity) 3)、数据库映射器(database mapper) 4)、具体化和虚化(materialization and dematerialization) 5)、缓存(cache) 6)、对象的事务状 阅读全文
posted @ 2019-09-28 16:32 遥远2 阅读(230) 评论(0) 推荐(0)
摘要: 1、概念 "Do It Myself"使用多态性(和信息专家),这是常见的方法。 这是经典的面向对象设计风格:Circle对象绘制自己;Square对象绘制自己,Text对象对自己进行拼写检查。注意,Text对象对自己进行拼写检查是信息专家模式的例子(拥有与工作相关信息的对象来完成工作)。 2、支付 阅读全文
posted @ 2019-09-28 16:10 遥远2 阅读(366) 评论(0) 推荐(1)
摘要: 1、场景 问题: javapos驱动,有2套,一套是IBM的,另一套是NCR的。如: 使用IBM硬件时要用IBM的驱动,使用NCR的硬件时要用NCR的驱动。那该如何设计呢? 注意,此处需要创建一组类(CashDrawer+CoinDispenser+...),并且每组类都事项相同的接口。 解决:使用 阅读全文
posted @ 2019-09-28 15:29 遥远2 阅读(342) 评论(0) 推荐(0)
摘要: 在《本地服务容错-适配器+工厂模式》中,总是优先尝试本地服务。但是,有时候需要先尝试外部服务,然后才是本地服务。GoF的代理模式可以解决这个问题。 1、代理模式的一般结构 2、使用代理模式解决本地服务容错 代理模式:代理类和被代理类,接口相同。 适配器模式:接口可不相同,主要是为了兼容老系统接口。 阅读全文
posted @ 2019-09-28 14:55 遥远2 阅读(231) 评论(0) 推荐(0)
摘要: 1、名词解释 2、如何处理异常? 1)、抛出异常 2)、处理错误 3、UML中如何标示异常? 1)、类图 2)、交互图 UML中很少使用异常 阅读全文
posted @ 2019-09-28 12:28 遥远2 阅读(1421) 评论(0) 推荐(0)
摘要: 继续前一章《缓存策略》,既然用缓存,那如何保证数据同步呢?即:缓存里的数据和DB里的数据一致。 如果LocalProducts对象每隔N分钟查询并更新它的缓存来解决数据一致性问题时,那么可将其设计为拥有控制线程的主动对象(active object)。线程休眠N分钟,唤醒后读取数据,再次休眠,如此反 阅读全文
posted @ 2019-09-28 12:00 遥远2 阅读(1577) 评论(0) 推荐(0)
摘要: 继续前一章《本地服务容错》 问题:考虑加载内存ProductCatalog缓存和基于LocalProducts文件缓存的可选方案: 一种是惰性初始化(lazy init):当实际读取外部产品信息时,逐步加载缓存。 一种是立即初始化(eager init):系统启动时,立即加载缓存。 如果设计者不能确 阅读全文
posted @ 2019-09-28 11:42 遥远2 阅读(305) 评论(0) 推荐(0)
摘要: 问题1:我们的ProductCatalog存储在了数据库里了,但是数据库瘫掉了,怎么办? 问题2:如果新加了存储ProductCatalog的服务(如另外一家合作公司的服务),怎么办? 参见如下设计: 1、核心-对于产品信息(ProductCatalog)的适配器 2、获取pc 3、从pc中获取ps 阅读全文
posted @ 2019-09-28 11:24 遥远2 阅读(297) 评论(0) 推荐(0)