随笔分类 -  软件工程

摘要:贫血模型和充血模型 数据和行为结合在一起才是一个完整的真正业务对象(领域对象),也才能够真正发挥对象封装的作用,这样的对象或类称为“充血模型”,而没有行为方法的纯数据结构的类称为“失血模型” 阅读全文
posted @ 2022-03-04 07:51 清泉白石 阅读(44) 评论(0) 推荐(0) 编辑
摘要:在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition tolerance)都需要的情景,然而这是不可能都实现的 参考文档 "分布式系统之CAP理论" 阅读全文
posted @ 2018-03-04 02:32 清泉白石 阅读(146) 评论(0) 推荐(0) 编辑
摘要:一、定义: 一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、特点: 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法 阅读全文
posted @ 2016-12-15 23:25 清泉白石 阅读(330) 评论(0) 推荐(0) 编辑
摘要:dir 阅读全文
posted @ 2016-11-25 10:22 清泉白石 阅读(131) 评论(0) 推荐(0) 编辑
摘要:一、定义: 定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 二、特点: 环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。 抽象 阅读全文
posted @ 2016-11-22 22:52 清泉白石 阅读(287) 评论(0) 推荐(0) 编辑
摘要:Spring中的观察者模式 Spring实现发布 订阅的例子 定义一个事件 定义一个对该事件的监听者A 定义一个对该事件的监听者B 定义一个发布者 单元测试,测试结果 源码分析 事件监听者 事件发布者 zookeeper中的观察者模式 参考文档 [1]: 面试官:“谈谈Spring中都用到了那些设计 阅读全文
posted @ 2016-11-21 18:25 清泉白石 阅读(247) 评论(0) 推荐(0) 编辑
摘要:一、定义: 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 二、特点: 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。 装饰对象包含一个真实对象的引用(reference) 装饰对象接受 阅读全文
posted @ 2016-11-19 17:38 清泉白石 阅读(219) 评论(0) 推荐(0) 编辑
摘要:dir 阅读全文
posted @ 2016-11-13 02:07 清泉白石 阅读(97) 评论(0) 推荐(0) 编辑
摘要:dir 阅读全文
posted @ 2016-10-20 15:38 清泉白石 阅读(135) 评论(0) 推荐(0) 编辑
摘要:dir 阅读全文
posted @ 2016-08-21 23:58 清泉白石 阅读(133) 评论(0) 推荐(0) 编辑
摘要:简单工厂 一、定义: 通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 二、特点: 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类。 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者 阅读全文
posted @ 2016-08-21 11:20 清泉白石 阅读(269) 评论(0) 推荐(0) 编辑
摘要:一、定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 二、特点: 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰 阅读全文
posted @ 2016-08-02 23:19 清泉白石 阅读(207) 评论(0) 推荐(0) 编辑
摘要:dir 阅读全文
posted @ 2016-07-21 14:34 清泉白石 阅读(143) 评论(0) 推荐(0) 编辑
摘要:单例模式属于对象创建性质的模式,用于产生一个对象的具体实例,并且可以确保系统中一个类只能产生一个实例。 饥饿式单例 懒汉式单例 内部类式单例 性能比较 创建5个线程,模拟多线程环境下的性能 两次比较 懒汉式 185ms 190ms 饥饿式 54ms 49ms 内部类式 56ms 61ms 在多线程条 阅读全文
posted @ 2016-04-29 17:06 清泉白石 阅读(262) 评论(0) 推荐(0) 编辑
摘要:一、定义 门面模式是一种封装性质的模式。提供了一个统一的接口,用来反问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 二、适用的场景 需要对一系列接口进行封装 三、模式中的角色 门面角色(Facade):调用子系统所有功能和责任 子系统角色(SubSystem):一个或多个接口 四 阅读全文
posted @ 2016-04-29 16:33 清泉白石 阅读(296) 评论(0) 推荐(0) 编辑
摘要:一、定义 将抽象化(Abstraction)和实现化(Implementation)解耦,使得两者可以独立地变化 如何理解?可以从定义中的三个词——“抽象化”、“实现化”、“解耦”来理解。 抽象化:从众多的事务中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如奔驰、宝马、奥迪等,他们共同的特征 阅读全文
posted @ 2016-02-22 12:33 清泉白石 阅读(432) 评论(0) 推荐(0) 编辑
摘要:一、定义 将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一个工作 二、适用的场景 要修改已经投产的接口 三、注意事项 适配器一般不用于开发阶段,通常用在服役的项目上 四、模式中的角色 目标接口(Target):客户期待的接口 需要适配的类(Adapt 阅读全文
posted @ 2016-02-21 21:14 清泉白石 阅读(451) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示