java设计模式
菜到怀疑人生
这个作者很懒,什么都没留下…
展开
-
java中的单体类
java中的单体类的设计非常巧妙,,所谓单体类就是希望该类只有一个实例对象,一个单体类的关键由下面三部分组成,三者的修饰词缺一不可:1、声明一个指向本类型的指针,同时让其指向一个实例对象,该指针的作用域修饰词为private和static。声明为private是防止在类外部改变该指针的值,虽然在类外部无法改变该指针的指向(由于构造函数为私有,所以无法在类外部申请实例对象),但可以将该指原创 2018-01-14 12:35:43 · 2084 阅读 · 0 评论 -
设计模式——原型模式
什么是原型模式简单来说就是对象的拷贝,拷贝分为深拷贝和浅拷贝深拷贝:两个变量代表不同的内存区域,但值完全相同浅拷贝:拷贝地址,两个变量代表同一块内存区域在原型模式中,对象的拷贝的基本数据类型及String是深拷贝,但是引用类型根据需要,可以是浅拷贝,也可以是深拷贝 java中的等号(=)对于基本数据类型及其封装类、String来说是深拷贝,对于对象来说是浅拷贝 原型...原创 2018-08-07 20:27:00 · 156 阅读 · 0 评论 -
设计模式——命令模式
什么是命令模式将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。当需要将发出请求的对象和执行请求的对象解耦的时候,可以考虑使用命令模式。 命令模式的角色Command: 抽象命令类ConcreteCommand: 具体命令类Invoker: 调用者Receiver: 接收者Client:客户类 ...原创 2018-08-02 15:52:49 · 195 阅读 · 0 评论 -
设计模式——中介者模式
什么是中介者模式如果我们想让两个对象之间进行通信,一种方法是让对象互相持有对方的引用,在需要的时候将消息通过引用传递给对方,这种方式在需要通信的对象不多的时候不会有问题,当通信的对象数目增多时,一个对象持有的引用就会非常多,为了克服这种问题,就用一个类(中介者)专门负责对象之间的交互,所有的对象都通过中介者进行通信 中介者模式的角色Mediator:抽象中介者角色,需要定义对象交互...原创 2018-08-06 20:29:47 · 196 阅读 · 0 评论 -
设计模式——模板模式
什么是模板模式模板模式可以说是最简单的设计模式,用一个抽象类将所有的操作声明一遍,定义一个骨架,具体的实现交给子类去完成 模板模式的角色AbstractClass:抽象父类,定义骨架ConcreteClass:具体实现类 抽象父类定义了所有子类需要完成的动作,但是各个子类具有不同的完成动作,模板模式在我们平常的编程中经常使用,这里就不举例子了...原创 2018-08-10 15:42:50 · 141 阅读 · 0 评论 -
设计模式——桥接模式
什么是桥接模式将抽象部分与实现部分分离开来,使抽象部分与实现部分能够自由的独立变化。抽象部分:并不是指传统的抽象类,而是指实现部分的共有特性实现部分:我的理解是抽象部分的来源,一组对象将共同对象抽离出来后,剩下的就是实现部分例如有一组有颜色有形状的图像,那么可以从颜色中抽离出形状作为抽象部分,而颜色作为实现部分 桥接模式的角色Abstraction:抽象类Refin...原创 2018-07-27 20:17:43 · 238 阅读 · 0 评论 -
设计模式——享元模式
什么是享元模式享——共享,元——元数据,可以理解为对象,即共享一组对象,享元模式能实现一组对象的共享,就和我们熟悉的数据库连接池一样。 享元模式的角色Flyweight:抽象享元类,规定外部状态的设定方法以及具体享元类的共有方法ConcreteFlyweight:具体享元类,实现具体的共享对象,可以包括内部状态和外部状态UnsharedConcreteFlyweight:非...原创 2018-07-31 20:18:54 · 192 阅读 · 0 评论 -
设计模式——外观模式
什么是外观模式通过引入一个外观类,将子系统与客户端分割,使客户端与子系统解耦 外观模式的角色 Facade: 外观角色SubSystem:子系统角色 实例:假设有CPU、磁盘、内存三个子系统,客户端通过三个子系统的协调工作来运行自己的代码:CPU:public class CPU { public void start(){...原创 2018-07-30 18:13:39 · 262 阅读 · 0 评论 -
设计模式——适配器模式
什么是适配器模式考虑这么一个场景,系统有接口A、A含有D函数,类B继承了A并实现了D,现在我们想用类C来替换类B,类C中的E方法和类B实现的D函数功能类似,效率更高,但是类C的该方法名称和D不一样,此时我们怎么做呢?1、更改D函数的名称,但是系统中继承A的其他类就会出现问题2、更改E方法的名称,但是系统中引用E方法的地方又会出错此时便可以使用适配器模式 适配器模式的角色 ...原创 2018-07-26 20:59:10 · 180 阅读 · 0 评论 -
设计模式——工厂模式
什么是工厂模式前面我们介绍了简单工厂模式,知道了简单工厂模式不容易扩展,在产品类型比较多的情况下,工厂模式在一定程度上解决了不易扩展的问题,每种商品都有一个特定的工厂负责生产,并且这个工厂只负责生产一种商品 工厂模式的角色Product:产品接口,定义产品的共有行为ConcreteProduct:具体产品,定义产品的具体属性和行为Factory:抽象工厂,定义工厂的共有行为...原创 2018-07-21 19:19:44 · 118 阅读 · 0 评论 -
设计模式——简单工厂模式
什么是简单工厂模式把实例化对象的责任交给一个特定的类负责,这个类就是工厂类,客户端将自己所需要的对象告诉工厂类,工厂类返回客户端所需要的对象。 简单工厂模式的角色Factory:工厂类,负责实例化对象并返回Product:抽象接口类,定义一组产品共同的行为ConcreteProduct:具体产品类,用于实现具体的产品行为 下面我们简单实现一个实例,工厂有雷神和火...原创 2018-07-21 16:25:32 · 165 阅读 · 0 评论 -
设计模式——装饰者模式
什么是装饰者模式动态地给一个对象增加一些额外的职责,注意是动态的添加额外的职责,一般情况下,我们都是通过继承关系来扩展类的功能,这种方式是静态的方式扩展对象的职责(职责已经用代码写死了),久而久之,这个类就会变得十分臃肿(一堆继承关系),而装饰者模式将继承关系变为了关联关系,使对象职责的扩展变得十分容易 装饰者模式的角色Component:抽象构建ConcreteCompone...原创 2018-07-28 20:26:05 · 202 阅读 · 0 评论 -
设计模式——单例模式
什么是单例模式在应用中一个类仅有一个实例,这个实例由类本身提供,客户端无法自主创建实例 单例模式的角色Singleton:单例类,仅有一个实例,由单例类自己返回自己的实例 首先提供一种简单的写法——饿汉模式:Printer:public class Printer { private static Printer printer=new Pr...原创 2018-07-25 16:56:14 · 156 阅读 · 0 评论 -
设计模式——建造者模式
什么是建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(即产品)。 建造者模式的角色Builder:抽象建造者,定义建造产品零部件的方法ConcreteBuilder:具体建造者,实现建造零部件的方法Director:指挥官,决定使用哪种建造者创建产品Product:产品类 实例:Builder:public in...原创 2018-07-24 16:52:03 · 191 阅读 · 0 评论 -
设计模式——备忘录模式
什么是备忘录模式备忘录模式其实类似于我们常见的游戏存档和回档,会有一个对象专门存储某个对象某个时刻的状态(即属性值),这个对象就相当于一份备忘录,在需要的时候,我们可以将对象恢复到备忘录中记录的状态 备忘录模式有三个角色originator需要备份的对象 memento保存备份的对象 caretaker负责管理memento,这个对象只起到保存备份的作用...原创 2018-07-17 14:47:32 · 278 阅读 · 0 评论 -
设计模式——策略模式
什么是策略模式策略模式为所有的算法定义一个抽象接口,继承这个接口,对所有的算法加以封装和实现,而算法的选择由客户端决定,举个例子,排序算法有多种,那么定义一个含有sort的抽象算法接口,继承这个接口,实现其中的sort方法,客户端使用时,自己决定使用归并排序或是快速排序等 策略模式的角色Strategy(抽象策略类):只负责定义策略方法。ConcreteStrategy(具...原创 2018-07-18 10:51:46 · 135 阅读 · 0 评论 -
设计模式——抽象工厂模式
什么是抽象工厂模式简单工厂模式可以生产多种产品,但是不满足开闭原则,工厂模式满足开闭原则,但是一个工厂不能生产多个商品,而抽象工厂模式相当于结合了两者的优点,在一定程度上可以满足开闭原则,同时一个工厂也可以生产多个商品。 抽象工厂模式的角色AbstractFactory:抽象工厂,定义工厂的共有方法ConcreteFactory:具体工厂,定义工厂生产的具体产品Abstra...原创 2018-07-23 16:27:20 · 189 阅读 · 0 评论 -
设计模式——组合模式
什么是组合模式将对象组合成属性结构以表示“部分-整体”的层次结构。组合使得用户和单个对象和组合对象的使用具有一致性。 组合对象的角色1. Component:是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component. 2. Leaf:在组合中表示叶子节点对象,叶子节点没有子节点。 3. Composite:定义树枝节点...原创 2018-08-08 22:13:46 · 161 阅读 · 0 评论