![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 61
我是个笨比
这个作者很懒,什么都没留下…
展开
-
设计模式-享元模式
1.享元模式概述图:运用共享技术有效地支持大量细粒度的对象。主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。何时使用: 1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这些对象的状态大部分可以外部化。 4、这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替。 5、系统不依赖于这些对象身份,这些对象是不可分辨的。如何解决:用唯一标识码判断,如果在内存中原创 2021-10-14 22:20:56 · 107 阅读 · 0 评论 -
设计模式-组合模式
1.组合模式概述意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。何时使用: 1、您想表示对象的部分-整体层次结构(树形结构)。 2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。如何解决:树枝和叶子实现统一接口,树枝内部组合该接口。关键代码:树枝内部原创 2021-10-14 21:54:46 · 118 阅读 · 0 评论 -
设计模式-外观模式
1.外观模式概述意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。使用场景: 1、为复杂的模块或子系统提供外界访问的模块。 2、子系统相对独立。 3、预防低水平人员带来的风险。外观模式中有以下的角色:外观角色:把多个子系统的接口整合,对外提供一个对外的统一原创 2021-10-13 15:55:45 · 109 阅读 · 0 评论 -
设计模式-桥接模式
1.桥接模式概述将抽象和实现分离,使它们可以独立的变化,实际上是使用组合关系来代替继承关系,将抽象和实现两个方向上的耦合降低。桥接模式的主要角色有:抽象化角色:定义抽象化,并且包含一个对实现化对象的引用。扩展抽象化:是抽象化角色的子类,实现了业务方法。实现化对象:定义接口,供子类使用具体实现化对象:给出实现化对象的方法实现试想这样一个场景,我们需要开发一个画图程序,要求能画各种形状,各种颜色的图形。按照传统的想法,应该定义一个Shape接口,在此基础上实现Rectengle,Circle,原创 2021-10-13 15:13:05 · 100 阅读 · 0 评论 -
设计模式-装饰者模式
1.装饰者模式概述指在不改变对象结构的情况下,动态的给对象增加一些额外的职责(即附加一些额外的功能)。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。装饰者模式中有以下的几个角色:抽象构件:定义一个接口接收附加责任的对象具体构建:实现了抽象构建,通过装饰角色为其添加职责抽象装饰:继承或实现抽象构建,并持有一个具体构件的实例,可以通原创 2021-10-13 13:42:39 · 86 阅读 · 0 评论 -
设计模式-适配器模式
1.适配器模式概述适配器模式,就是两个原本不兼容的接口结合在一起,使得它们可以一起工作。举例: 1、美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V。 2、JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK,则要将以前系统的 Enumeration 接口转化为 Iterator 接口,这时就需要适配器模式。 3、在 LINUX 上运行 WINDOWS 程序。 4、JAVA 中的 j原创 2021-10-12 21:47:20 · 82 阅读 · 0 评论 -
设计模式-代理模式
1.代理模式概述用一个类来代理另一个类的功能,为访问某个类的对象提供一种代理以控制访问。并且在此基础上增强原来的功能。举例:windows系统上的快捷方式,当我们需要运行一个软件时,不需要找到其安装位置双击.exe文件,而直接访问桌面上的快捷方式即可。火车站买票,我们不需要自己去火车站购买,可以去代售点购买,不过代价是收取一定的服务费。在代理模式中有以下的几个角色:抽象主题角色:提供原始方法的接口真实主题角色:实现了的抽象主题角色的接口方法代理角色:同样实现了原始方法接口,并且聚合了真原创 2021-10-12 20:07:09 · 166 阅读 · 0 评论 -
设计模式-建造者模式
1.建造者模式概述建造者模式就是将一个复杂对象的构建和表示分开。建造者模式的组成部分:抽象建造者类(builder):定义组成复杂对象的部件的创建,是抽象类。具体建造者类(Concrete Builder):继承自builder,实现各个部件的创建,并且创建完成之后提供产品的实例。产品(product):要创建的复杂对象。指挥者类(Director):调用具体建造者类,以某种顺序完成各个部件的创建并返回。UML类图如图:根据上述UML图,转化的代码如下:抽象builder:publ原创 2021-10-11 21:38:35 · 52 阅读 · 0 评论 -
设计模式-原型模式
1.原型模式的简单介绍原型模式就是指,对于一个类的对象,获得他的一个副本。副本的属性和方法与该对象相同。在继续了解之前,还有一些预备知识需要明确。浅复制:对于一个类的对象的简单类型变量,它的副本与其不同。但是对于类类型的变量,副本与原生对象使用的是堆中的同一个。深复制:一个对象的所有类型的变量,都会额外的拷贝一份。2.原型模式实现实际上java已经为我们提供了克隆一个对象的方法,并且定义在了所有类的父类Object中,要想使用该方法,类首先需要实现CloneAble接口。publi原创 2021-10-11 19:08:03 · 51 阅读 · 0 评论 -
设计模式-工厂模式
1.什么是工厂模式?以及工厂模式的几个组成部分。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。主要有以下的几个组成部分:1.抽象产品2.具体产品(继承自抽象产品)3.抽象工厂(负责提供产生对象的接口方法)4.具体工厂(实现产生对象的方法,生产某种具体的对象产品)2.层层递进,探究工厂模式的优点与缺点现在引入这样一个场景:我们需要一个咖啡点餐系统,要求根据客户的需求提供原创 2021-10-11 14:26:45 · 87 阅读 · 0 评论 -
单例模式全解
1.单例模式简单介绍单例模式,直截了当的说就是让类在整个程序运行周期里只有一个实例对象存在。好处是针对那些庞大而又没有必要多次新建对象的类,不让其随意创建新对象,造成额外的时间和空间浪费。2.单例模式的实现饿汉式单例模式饿汉式单例模式就是不管我们在程序中是否使用某个类的对象,都会创建好一个它的对象。这种情况可以应用于那些超大型的类,在程序运行过程中创建反而会拖垮程序的运行速度。class SingleTon{ private static SingleTon instance=new原创 2021-09-27 19:41:38 · 104 阅读 · 0 评论