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