随笔分类 - 设计模式
1
摘要:设计模式之迭代器模式 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 这里我们认为集合(或者称容器)的作用是用于存储数据,而遍历元素这个事情与存储元素应该分开, 以满足开闭原则、单一职责原则。Java集合框架就大量使用了迭代器模式
阅读全文
摘要:设计模式之责任链模式 在软件设计中使用责任链模式来实现松散耦合,将客户端的请求传递给对象链进行处理。然后链中的对象将自己决定谁将处理请求,以及请求是否需要被发送到链中的下一个对象。 一、JDK中的应用 如JDK中的switch、try-catch中的多个catch块等。 二、举个例子 责任链模式的一
阅读全文
摘要:亦称:Visitor Design Pattern 🔥 意图:访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。 一、代码示例 例如,考虑一个购物车,我们可以在其中添加不同类型的项目(元素)。当我们点击结帐按钮时,它会计算要支付的总金额。现在我们可以在item类中使用计算逻辑,也
阅读全文
摘要:定义 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于 行为型模式 。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 释义 直接看这个定义也许会一时摸不着头脑。 :green_book:看个例
阅读全文
摘要::man: 前言 本文的主要内容: 介绍享元模式 示例 云盘 总结 源码分析享元模式的典型应用 String中的享元模式 Integer中的享元模式 Long中的享元模式 Apache Common Pool2中的享元模式 享元模式 享元模式(Flyweight Pattern) :运用共享技术有效
阅读全文
摘要:之前博客相关链接: "简单工厂模式" "简单工厂模式、工厂方法模式与抽象工厂模式的区别(转)" 一、简单工厂 主要是三个角色: 工厂类 :担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的具体业务逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的java类实现 抽象产品 :担任这
阅读全文
摘要:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 一、介绍 意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决: 一个
阅读全文
摘要:一、代理模式概述 定义 :给某一个对象提供一个代理,并由代理对象控制对原对象的引用 分类:有静态代理和动态代理之分 动态代理有基于JDK的动态代理和基于Cglib的动态代理 二、静态代理 举个例子:比如找周杰伦唱歌,我们不能直接找周杰伦,我们得找他的经纪人,经纪人要签合同,付定金,唱完歌再付尾款。
阅读全文
摘要:假设我们现在要造一批悍马汽车,悍马汽车有两个系列H1和H2,首先不考虑任何设计模式,看看设计的类图: 看看代码的实现: 程序写到这里,我们发现,run()方法的实现应该在抽象类上,不应该在实现类上,好,我们修改一下类图和实现: 接下来我们测试一下模板方法模式: 然后我们又发现问题了,悍马牌汽车sta
阅读全文
摘要:1.自定义注解 2.抽象策略→策略实现 这里可以新增其他对于价格范围的策略,也可以定义在多个文件中。 3. 策略选择 PriceFactory是个单例类, 准确来说,这个类是个策略选择器。用于获取对应金额的策略类. 而PriceContext则是通过PriceFactory选择出的策略类,调用get
阅读全文
摘要:外观模式真是比单例模式还要简单了,毕竟单例还有八种写法 简介 外观模式(Facade), 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 实例探究 假设一台电脑,它包含了 CPU(处理器),Memory(内存) ,Disk(硬盘)这几个部件,若想
阅读全文
摘要:项目需求 看一个 学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系: 传统方法 首先想到的是继承:将学院看做是学校的子类,系是学院的子类,这样实际上是站在 组织大小 来进行分层次的。(个人觉得这里用继承不是很恰当,
阅读全文
摘要:在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰模式来实现。 装饰模式的定义与特点 装饰(Decorator)模式的
阅读全文
摘要: 在开始学java的时候老师讲到继承的时候,总是喜欢用一个例子来讲解,那就是画图,这里有一个画笔,可以画正方形、长方形、圆形(这个大家都知道怎么做吧,我就不解释了)。但是现在我们需要给这些形状进行上色,这里有三种颜色:白色、灰色、黑色。这里我们可以画出3 3=9中图形:白色正方形、白色长方形、白色
阅读全文
摘要:适配器模式简介 在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。 在软件设计中也可能出现:需要开发的具有
阅读全文
摘要:一、什么是建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。 Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建复合属性的对象。 二、代码演示 建造者模式用于创
阅读全文
摘要:总结: 原型设计模式:用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象。 ==注意:== 1. java中只有值传递,如果是引用类型,传递的是引用,其实也是值传递。 2. 原型设计模式有深拷贝和浅拷贝,通过Object类的Clone()方法,要使用该方法,必须实现Cloneable接
阅读全文
摘要:虽然看完了《大话设计模式》,但是工厂模式的三种类型之间的差异,理解还不是非常透彻,那么本文就围绕三者间的差异性来阐述各自的优缺点。 简单工厂模式 (Simple Factory) 首先定义一个产品类的共同接口 分别有三个产品ProductA、ProductB、ProductC ,均实现Product
阅读全文
摘要:一、 项目背景 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 1) 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 2) 披萨的制作有 prepare,bake, cut, box 3) 完成披萨店订购功能。 二、传统方式(if()..elseif()...else) 这
阅读全文
摘要:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类 只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session 对象。SessionFactory并不是轻量级
阅读全文
1

浙公网安备 33010602011771号