![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【设计模式】
yysx
努力就有收获自信才有未来
展开
-
代理模式回顾
之前的两篇文章,介绍了代理模式,引出动态代理。然后分别介绍了常用的JDK动态代理和CGLIB动态代理。本篇再次回顾下关键点。 1.代理模式 先上类图 控制对象访问 代理类和被代理类都实现了同一接口,代理类持有被代理类的引用。 静态代理十分简单易懂,但随着被代理对象的增加,代理类也会随之增加。但每个代理类所做的工作又十分类似。为了解决这一问题,引出了动态代理。 动态代理 如上所述,抽象出了公共的代理类。在运行时,动态生成具体的代理类。 JDK动态代理,引入Proxy类来生成代理类。真正的代理类为$P原创 2020-11-04 10:47:29 · 81 阅读 · 0 评论 -
设计模式的六大原则
1、单一职责原则(SRP) 2、开放-封闭原则(The Open-Closed Principle) 3、依赖倒转原则 4、里氏代换原则(LSP)原创 2014-03-05 20:39:18 · 1900 阅读 · 18 评论 -
设计模式简介
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式是软件工程的基石脉络,如同大厦的结构一样。 要素: 模式名称(pattern name) 问题(problem) 解决方案(solution) 效果(consequences) 设计模式分为三种类型,共23种。 创建型模式:单例模式、抽象工厂原创 2014-03-08 10:23:33 · 2054 阅读 · 20 评论 -
简单工厂VS工厂方法
背景需求:用面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 标准:代码规范,通过封装、继承、多态把程序的耦合度降低,程序灵活,易于修改和复用。 简单工厂模式 主要类图: 1、加减乘除类继承Operation运算类 2、简单运算工厂类作为一个单独的类,用来创造实例。 其结构图为: 工厂方法模式原创 2014-03-15 17:16:57 · 2784 阅读 · 19 评论 -
不想当冠军的模式不是好模式——模式总结
一、比赛简介: 主题:设计模式评选 创始人:面向对象先生 来宾:抽象先生、封装先生、继承女士、多态女士等 评委:单一职责先生、开放封闭先生、依赖倒转先生、里氏代换女士、合成聚合复用女士、迪米特先生 参赛选手: 第一组:创建型模式 第二组:结构型模式 第三组:行为型模式 主持人:GOF 二、比赛内容: 第一组: 创建型模式十分灵活,抽象了实例化的过程。它隐藏了这些类的实例原创 2014-03-27 12:15:57 · 2085 阅读 · 28 评论 -
状态模式与状态图
说到状态模式,书上给出的解释是:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。看不懂?没关系,毕竟我们都不是小菜。 我们还是从熟悉的状态图说起吧。 故事是这样的:我们来看一个人他的下午时光是如何度过的。在12:00~13:00之间,他在吃饭。过了13点,他就开始午睡。睡醒以后,到了15点,他就出去玩了。也就是说,他的下午时间就在吃饭——睡觉——玩耍之间转换。 用状态图描述,基本上是这个样子的。(简化理解)原创 2014-03-22 21:05:02 · 1673 阅读 · 19 评论 -
策略模式——从鸭子入手
找出可能变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 为了分开变化的和不变化的部分,需要建立两组类,一个是与fly相关的,一个是quack相关的,每组类各自实现各自的动作。我们将这两个行为从Duck类中分开,建立一组新类。 针对接口编程,而不是针对实现。原创 2014-09-22 18:00:05 · 2145 阅读 · 30 评论 -
观察者模式——出版者与订阅者
小结: 再一次学习设计模式,跟第一次学大话的时候很不一样。《Head First》中总会给你一些新的理解,比如博客中蓝字标出的文字,如果不能理解这些原则,即使代码实现了也没有多大的收获。所以,博客中并没有给出观察者模式的代码实例。 学习需要反复,每一个反复都让你的认识更加深入。原创 2014-10-01 09:15:29 · 2180 阅读 · 28 评论 -
回顾装饰模式
最近面试经常被问到这两种设计模式的区别,小编觉得也没什么可比较的地方。额……可能是站的角度不一样吧,那就来比较一下。 说到装饰模式,首先想到的是牛奶加糖加奶的故事。使用装饰模式,可以灵活的解决不同客户的多种附加需求。比如:只加糖、只加奶、又加糖又加奶。 而代理模式,你应该会想到动态代理之类的,是代理对象的行为。 那么装饰模式如何实现动态添加类的职责呢?原创 2016-08-07 16:33:42 · 575 阅读 · 3 评论