脚本之家(jb51.cc)设计模式栏目主要收集java设计模式资料。
备忘录模式的定义: 备忘录模式又叫作快照模式或者令牌模式,指在不破坏封装的前提下,捕获一个状态的内部状态,并在对象之前保存这个状态。这样以后就可 将该对象恢复到原先保存的状态,属于行为型设计模式。 备
中介者模式的定义: 中结者模式又叫作调解者模式或调停者模式。用一个中介对象封装一系列对象交互,中介者使各对象不需要显示地相互作用, 从而使其耦合松散,而且可以独立得改变它们之间得交互,属于行为型设计模
代理模式的定义: 代理模式指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型设计模式。 在某种情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的
工厂方法模式的定义: 工厂方法模式又叫做多态性工厂模式,指定义一个创建对象的接口,但由实现这个接口的类来决定实例化哪个类,工厂方法把类的实例化推迟到子类种进行。 在工厂方法模式中,不在由单一的工厂类生
建造者模式的定义: 建造者模式将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示,属于创建型设计模式。 对于用户而言,使用建造者模式只需指定需要创建的类型就可以获得对象,创建
装饰器模式的定义: 装饰器模式也叫作包装器模式,指在不改变原有对象的基础上,动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活,属于结构性设计模式。 装饰器模式提供了比
模板方法模式的定义: 模板方法模式又叫作模板模式,指定义一个操作中的算法的框架。而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法 的某些特定步骤,属于行为型设计模式。 模板方
策略模式的定义: 策略模式又叫政策模式,它将定义的算法族分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户,属于行为型设计模式。 很多同学可能不太理解这个定义,我举个简单的
简单工厂模式的定义: 简单工厂模式又叫静态工厂方法模式,简单来说,简单工厂模式有一个具体的工厂类,可以生产出不同的产品,属于创建型设计模式。 简单工厂模式不在GoF23三种设计模式之列。 简单工厂模式
迭代器模式的定义: 迭代器模式又叫作游标模式,它提供一种按顺序访问集合/容器对象元素的一种方法,而又无须暴露集合内部表示。 迭代器模式可以为不同的容器提供一致的遍历行为,而不用关心容器内元素的组成结构
适配器模式的定义: 适配器模式又叫作变压器模式,它的功能是将一个类的接口变成客户端所期望的另一个接口,从而使原本因接口不匹配而导致 无法在一起工作的两个类能够一起工作,属于结构型设计模式。 在软件开发
状态模式的定义: 状态模式也叫作状态机模式,运行对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类,属于行为型设计模式。 状态模式中类的行为是由状态决定的,在不同的状态下有不同的行为。其
命令模式的定义: 命令模式是对命令的封装,每一个命令都是一个操作:请求方发出请求要求执行一个操作;接收方收到请求,并执行操作。命令模式解耦了请求方 和接收方,请求方只需请求执行命令,不用关心命令怎么被
享元模式的定义: 享元模式又叫作轻量级模式,是对象池的一种实现。类似线程池,线程池可以避免不停的创建和销毁多个对象,消耗性能。 享元模式提供了减少对象数量从而改善应用所需的对象结构的方式。其宗旨是共享
单例模式的定义: 单例模式指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点,属于创建型设计模式。 单例模式的应用场景: 需要频繁创建的一些类,使用单例可以降低系统的内存压力,减少GC。
代理模式:即Proxy Pattern,常用的设计模式之一。代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。 代理概念 :为某个对象提供一个代理,以控制对这个对象的访问。
基本需求: 将一个220V的电压输出成5V的电压,其中220V电压为被适配者,变压器为适配器,5v电压为适配目标 基本介绍: 适配器模式属于结构型模式,将某个类的接口转换成客户端期望的另一个接口表示,
基本需求: 现在对不同手机类型的不同品牌实现操作,比如手机品牌有很多种,华为,小米等,手机的形状也有很多种,直立,折叠等 现在新增加一个形状或者品牌 传统方式: 现在新增加一个形状或者品牌,都需要增加
基本需求: 展示一个学校的结构,比如一个学校下面有多个学院,学院下面有多个系,对其节点主要是遍历,与组合模式略有不同 传统方案: 学校<-学院<-系 依次继承 这种方式,在
基本需求: 建房子需要,打基地,砌墙,封顶等三个步骤,而且建造每种房子的步骤都一样,房子的种类不一样,建造的过程是一样的,但是要求不同 例如:去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经
基本介绍: 代理模式(Proxy)为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能,想在
基本需求: 展示一个学校的结构,比如一个学校下面有多个学院,学院下面有多个系,相当于一个树形结构,对其节点需要进行操作 传统方案: 学校<-学院<-系 依次继承 这种方式,
基本需求: 小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同 每个客户要求发布的方式不一样,A要求以新闻的方式发布,B要求以博客的方
设计模式是面对同类软件工程设计问题所总结出来有用的经验,模式不是代码,是某类问题通用的解决方式 设计模式的本质是提高软件的维护性,通用性和扩展性,并降低软件的复杂度 java设计模式共23种,分为三类
基本需求: 有一个Sheep类的对象,我们现在需要创建100个和该对象属性完全一致的对象 传统方式: 使用new关键字创建100个对象,将这一百个对象属性使用原型的get方法进行复制 代码实现 //
基本需求: 一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就可以控制对这些家电工作 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App分别控制,我们希望只要一个
基本需求: 制作豆浆的流程 选材 >添加配料 >浸泡 >放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于
基本需求: 咖啡的种类有很多种,调料也有很多种,下单时,可以点单品咖啡也可以点单品咖啡+调料的组合,并计算下单时花费的金额 传统方式: 方式一 创建一个抽象类Drink,让所有的单品咖啡和组合咖啡都继
基本需求: 电脑需要键盘鼠标等固定的组件组成 现在分为个人,组织等去买电脑,而同一种组件对不同的人(访问者)做出不同的折扣,从而电脑的价格也不一样 传统的解决方法:在组件内部进行判断访问人的类型,从而
设计模式的目的: 代码重用性 (即:相同功能的代码,不用多次编写) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护) 可靠性 (