随笔分类 -  设计模式

摘要:1. 定义 状态模式 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 2. 类图 3. Example 下面定义了一个State接口,接口里有个meaningOfLife的方法,定义了出生、三十、四十、五十、顿悟的几种状态。 人的主体PersonContext成员变量有State 阅读全文
posted @ 2020-03-17 22:40 Code&Fight 阅读(111) 评论(0) 推荐(0) 编辑
摘要:1. 定义 使用 中介者模式 来集中相关对象之间复杂的沟通和控制方式。 2. 类图 3. Example 4. 使用 MVC中的C 机场调度中心 https://www.jianshu.com/p/4b57ed461a54 中提到的数据同步的问题倒是挺不错的 5.其他 中介者的优点: 1. 通过将对 阅读全文
posted @ 2020-03-10 23:47 Code&Fight 阅读(106) 评论(0) 推荐(0) 编辑
摘要:1. 定义 享元模式 是池技术的重要实现方式,定义如下:使用共享对象可有效支持大量的细粒度的对象。 2. 类图 3. Example 偷个懒, https://www.jianshu.com/p/a2aa75939766 这里的火车票例子还是蛮不错的! 4. 使用场景 系统中存在大量的相似对象 需要 阅读全文
posted @ 2020-03-03 23:45 Code&Fight 阅读(116) 评论(0) 推荐(0) 编辑
摘要:定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 类图 其他 1. 优点: 性能优良: 原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多 逃避构造函数约束(优缺点并存): 2. 使用场景 资源优化场景 性能和安全要求的场景 一个对象多个修改者的场景 (实际项目中 阅读全文
posted @ 2020-03-03 23:01 Code&Fight 阅读(112) 评论(0) 推荐(0) 编辑
摘要:1. 定义 桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立的变化。 2. 类图 3. Example 假如你是个小有所成的成功人士,开了家公司,生产什么商品全靠追风,哪个赚钱生产哪个,请写出商品生产、销售的过程,要求商品变化时,代码尽可能少变化。 输出如下: 个人理解: 桥接模式好像是这样 阅读全文
posted @ 2020-03-03 21:54 Code&Fight 阅读(109) 评论(0) 推荐(0) 编辑
摘要:1. 定义 当你想让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。 2. 类图 3. Example 作为员工需要请假或者加薪,需要经历:技术leader——部门经历——CTO的流程。 输出结果: 由此可见,请求被处理的时候,你不知道是谁在进行处理。请求有可能会被处理,也有可能不会被 阅读全文
posted @ 2020-02-26 22:13 Code&Fight 阅读(378) 评论(0) 推荐(0) 编辑
摘要:单例模式 传统的写法 懒汉模式的线程不安全复现 解决方案: 1. 懒人同步——getInstance方法加上synchronized关键字 2. DCL——Double Checked Lock双重检查锁定 DCL: 关于DCL存在的问题,参考《并发编程的艺术》3.8节。 线程执行到(1)时,代码读 阅读全文
posted @ 2019-09-18 12:53 Code&Fight 阅读(132) 评论(0) 推荐(0) 编辑
摘要:定义 其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能 类图 实例 毕业季,同学们面临很多选择: 工作、出国深造、考研... Michael刚开始的时候选择的工作,但是工作两 阅读全文
posted @ 2019-09-16 13:11 Code&Fight 阅读(187) 评论(0) 推荐(0) 编辑
摘要:观察者模式 定义 观察者模式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。 类图 例子 假设由这样一个例子,大家都比较关注房价,所以关注了一个网站,利用rss订阅。当有新的动态更新时,所有订阅的用户就会收到最新的消息。 定义主题及其实现House 阅读全文
posted @ 2019-08-09 22:02 Code&Fight 阅读(173) 评论(0) 推荐(0) 编辑
摘要:装饰者模式 1. 定义 装饰者模式 动态的将责任附加到对象上。如要扩展功能,装饰者提供了比继承更有弹性的替代方案。 2. 类图 3. Example 假如有这样一个需求:有一天,奶茶店的老板喊你给他们做一个简单版的计算价格程序。新店开张,供应的饮料有奶茶(8元)、红茶(7元)、绿茶(5元)三种,提供 阅读全文
posted @ 2019-08-09 00:13 Code&Fight 阅读(186) 评论(0) 推荐(0) 编辑
摘要:适配器模式 适配器模式 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 Example: 指鹿为马 假设由鹿和马的类: 以及各自实现黑马和白鹿(话说《白鹿原》这本书还可以的,陈忠实先生的叙述引人入胜): 看下鹿的适配器, 通过测试程序,来见证奇迹: 我们发现输出 阅读全文
posted @ 2019-08-03 18:55 Code&Fight 阅读(195) 评论(0) 推荐(0) 编辑
摘要:模板方法 模式 定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 一个例子 假设有咖啡和茶两个类: 我们发现沏茶和冲咖啡的过程有些是一样的,有些不一样。 prepareRecipe作为模板方法,抽取一个抽象类: 阅读全文
posted @ 2019-08-03 18:13 Code&Fight 阅读(160) 评论(0) 推荐(0) 编辑

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