![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 87
想成为工程师的码农
这个作者很懒,什么都没留下…
展开
-
设计模式之建造者模式
将一个复杂的对象创建与它的表示分离,是的同样的构建过程可以创建不同的表示。 通用类图如下: 建造模式中主要有如下四个角色:Prodct产品类:产品便是建造中的复杂对象 抽象建造者:给出一个或多个抽象接口,规范产品的组件,有子类实现具体组建方法 具体建造者:通常是实现了抽象建造者的方法,并且返回一个组建好的对象 Director导演类...原创 2015-03-12 21:27:20 · 157 阅读 · 0 评论 -
设计模式之代理模式
代理模式是一种使用率非常高的模式,定义如下:为其他对象提供一种代理以控制这个对象的访问。 从通用类图中可以看出代理模式涉及到三个类:1.Subject抽象主题角色抽象主题类可以是抽象类也可以是接口,上面的类图使用的抽象类 2.具体主题角色也可以称为被委托角色,是业务逻辑的具体执行者 3.Proxy代理角色它负责对真是角色的应用,把所有抽象的主题类定...原创 2015-03-13 14:04:56 · 70 阅读 · 0 评论 -
代理模式之动态代理
为什么叫动态代理呢?动态代理就是实现阶段不用关心代理谁,而是在运行阶段指定代理哪一个对象,相对来说自己写代理类的方式都是静态代理,现在有一个非常流行的框架Spring,当我们面试的时候一般都会问Spring有哪些特征,我们一般会说AOP、IOC,其实这里的AOP即面向横切面变成的实现原理就是动态代理。 接着上次小明找游戏代理说,看看使用动态代理如何实现小明找代练的场景: 与...原创 2015-03-14 20:08:48 · 109 阅读 · 0 评论 -
设计模式之原型模式
原型模式是一种创建型的模式,原型模式的简单程度仅次于单例模式和迭代器模式,正是由于简单,使用的场景非常多。 通过原型模式的通用类图可以看到,其实原型模式的核心就是一个clone方法,通过该方法实现对象的拷贝。 原型模式的优点:1.原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量对象时。2.规避构造方法的约束,因为原型模式是...原创 2015-03-16 09:19:02 · 153 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式又叫调停模式,定义如下:用一个中介者对象封装一系列的对象的交互,中介者使各个对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 通用类图如下: 从图中可以看到,中介者模式由一下几部分组成:1.抽象中介者模式Mediator抽象中介模式定义统一的接口,用于各同事角色之间的通信 2.具体中介者模式Concr...原创 2015-03-16 14:23:38 · 142 阅读 · 0 评论 -
设计模式之命令模式
命令模式是一个高内聚的模式,其定义如下:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录日志,可以提供命令的撤销和恢复功能。 命令模式的通用类图如下: 命令模式是对命令的封装,命令模式把发出命令的责任和执行命令的责任分开,委派给不同的对象。每一个命令都是这样一个操作:请求一方发出要求执行一个操作,接收的一方...原创 2015-03-17 16:35:08 · 144 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式是一种对象的行为模式。在责任链模式里,使多个对象都有机会出来请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求。 责任链模式的显著优点就是讲请求和处理分开,请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌,责任链的一个显著缺点就是性能问题,因为每个请求都是从链头遍历的到链尾,特别是在链比较...原创 2015-03-18 14:36:27 · 119 阅读 · 0 评论 -
设计模式之装饰者模式
装饰者模式又叫包装模式,定义如下:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰者模式相比生成子类来说更为灵活。 装饰者模式的类图如上:从图中可以看到装饰着模式涉及到四个角色:1.抽象构件角色ComponentComponent可以是一个接口或者抽象类,主要是定义一些规则2.具体构件角色ConcreteComponentConcrete...原创 2015-03-19 14:47:38 · 139 阅读 · 0 评论 -
设计模式之策略模式
策略模式就是定义一组算法,将每个算法都封装起来,并且是他们之间可以互换 通过类图可以知道,策略模式设计到如下三个角色1.Context封装角色它也叫上下文角色,其作用就是用来封装高层模块对策略的直接访问,封装可能存在的变化 2.Strategy抽象策略角色策略的抽象,定义每个算法或策略必须具有的方法和属性 3.ConcreteStrategy 具体策略...原创 2015-03-20 17:05:55 · 147 阅读 · 0 评论 -
设计模式之适配器模式
适配模式的定义如下:将一个类的接口转换成客户端所期待的另一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一个工作 适配器模式在生活中还是很常见的,比如你的笔记本上的电源适配器,可以使用在110-220V之间变化的电源,而笔记本还能正常工作 适配器模式的通用类图: 从类图中可以得知适配模式主要设计到三个角色:1.Target目标角色该角色定义把其他类...原创 2015-04-03 11:49:31 · 227 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式的定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 模板方法的通用类图 我们所说的模板方法指的就是抽象类中的templete方法,该方法实现对doSomething方法的调用并且这个方法的具体实现是交由子类实现的。 模板方法的具体应用,比如我们开发的系统需要解...原创 2015-03-11 21:05:31 · 103 阅读 · 0 评论 -
设计模式之抽象工厂模式
抽象工厂模式是工厂方法模式的升级,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方法。 抽象工厂的通用类图 抽象工厂模式使用于多个业务品种或者多个业务类型,即AbstractProduct存在多个实现类,拿生产手机为例。可以生产诺基亚(由于可以砸核桃所以破产了),苹果、三星、小米、华为、锤子等,类图如下: 将...原创 2015-03-10 14:49:47 · 123 阅读 · 0 评论 -
设计模式之工厂方法模式
最近一直在看设计模式相关的书籍,决定正确每天将自己学到的设计模式以及自己的理解写成博客,供大家参考和点评,主要目的还是对自己的学习做一下总结。 最近看到一本设计模式的书籍《设计模式之禅》已经通读一遍,现在是第二遍阅读,感觉作者对设计模式的讲解很通俗易懂,通过对这本书的学习也加深自己对java框架方面的理解,java框架上又很多设计模式,以前上学的时候也学过设计...原创 2015-03-06 15:17:15 · 96 阅读 · 0 评论 -
设计模式之单例模式
前段时间看了《设计模式之禅》这本介绍设计模式的书,感觉讲的挺好,最起码给我的感觉是很通俗易懂,相信大家也都学过一些设计模式,设置是为了准备面试而特意去网上查了一些有关设计模式的资料,看完这本书本来是决定每天至少写一篇关于博客的,目的就是讲自己学到的东西做一个整理,但是由于中间各种原因,没有坚持下来,翻看自己的博客,发现几篇文章还是14年写的,很是惭愧,今天决定每天发表一篇博客,主要是对自己学到的东原创 2015-05-28 15:27:37 · 425 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式使用的频率非常高,在我们的日常开发中总能见到,也许你一直在使用但是却不知道其实他的名字叫工厂方法模式。工厂方法模式的定义如下:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法的通用类图如下: 工厂方法模式的通用代码如下:public abstract class Creator { publi原创 2015-05-29 10:49:42 · 355 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式定义如下:定义一个操作中的算法框架,而将一些步骤的逻辑实现延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些逻辑。模板方法通用类图如下:模板方法是一个很简单的实现模式,相信大家在写代码的过程中也遇到过或者自己写过,只是可能不知道其实那就是模板方法模式,模板方法模式核心就是使用java的继承机制,将某些步骤的逻辑交由子类去实现。原创 2015-05-31 10:59:31 · 474 阅读 · 0 评论 -
设计模式之抽象工厂模式
刚看到抽象工厂模式,发现抽象工厂模式是很想的,抽象工厂模式定义如下:为创建一组相关或相互依赖的对象提供一个接口,而且不需要指定它们的具体类抽象工厂模式的通用类图如下:每一个模式都是针对一定问题的解决方案。抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构下面用一个汽车制造原创 2015-05-30 09:02:17 · 514 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式又叫生成器模式,定义如下:将一个复杂对象的构造与它的表示分离,是的同样的构建过程 可以创建不同的表示建造者模式的通用类图如下:代码如下:public abstract class Bulider { // 设置产品的不同部分,即组装产品 public abstract void setPart(); // 返原创 2015-06-01 10:45:27 · 388 阅读 · 0 评论 -
设计模式之代理模式
代理模式是一种很常见的设计模式,他使用代理对象完成用户请求原创 2014-08-05 16:08:14 · 322 阅读 · 0 评论 -
设计模式之原型模式
原型模式定义如下:用原型实例指定创建对象的种类,别且通过拷贝这些原型创建新的对象原型模式的通用类图:原型模式的有点:1.性能优良原型模式是在内存中二进制流的拷贝,比直接new一个对象性能好很多2.逃避构造函数的约束原型模式直接在内存中拷贝,不会执行构造函数原型模式的使用场景1.资源优化的场景类初始化需要消耗很多资源2.原创 2015-06-03 16:18:36 · 381 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式定义:用一个中介者对象封装一系列的对象交互,中介者使各个对象不需要显示的相互作用,从而达到解耦的效果,而且可以独立的改变它们之间的交互中介者模式的通用类图如下:代码如下:/** * 抽象同事类 * */public abstract class Colleague { protected Mediator media原创 2015-06-04 13:07:04 · 348 阅读 · 0 评论 -
设计模式之命令模式
命令模式的定义如下:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供撤销和恢复功能命令模式的通用类图如下:通过类图可以看到命令模式主要涉及到三个角色Receiver接收者角色,命令传到这里是应该被执行的Command命令模式,需要执行的命令都在这里定义Invoker调用者角色,接收到命令并执行命令原创 2015-06-06 09:32:06 · 339 阅读 · 0 评论 -
设计模式之单例模式
什么是单例模式?单例模式就是一个类只能产生一个实例,如果控制一个类只能产生一个实例呢?我们在创建对象时一般都是使用new来产生对象即调用类的构造方法,如果将构造方法私有化那么就控制了外部类随意创建对象的能力。 所以单例的实现可以总结为:1.构造方法私有化2.类中含有一个本类型的静态的私有化的属性3.对外提供一个静态的返回本类型的静态方法 单例模式的实现分为懒...原创 2015-03-05 16:50:23 · 72 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式也叫发布订阅模式,它是一个在项目中经常使用的模式,定义如下: 定义对象间一种一对多的依赖关系,是的每当一个对象改变状态,所有依赖它的对象都会得到通知并被自动更新 观察者模式通用类图: 通过类图看到观察者模式涉及到如下四种角色:1.Subject 被观察者定义被观察者必须实现的职责,它必须能够动态增加、取消观察者。它一般是抽象类或是实现类,仅仅作为...原创 2015-04-08 14:01:17 · 159 阅读 · 0 评论