转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像改动了它的类.状态模式说白了就是一个对象有不同的状态.不同的状态相应不同的行为.它事实上是对switch case这种语句的拓展. 一.uml建模: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGh5X3ljdQ==/font/5a6L5L2T/fon…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39755577 观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一来.当一个对象改变状态时,依赖它的对象都会收到通知并自己主动跟新.Java已经提供了对观察者Observer模式的默认实现, Java对观察者模式的支持主要体如今Observable类和Observer接口. 先看uml模型图: 一.UML模型图 watermark/2/text/aHR0cDovL…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与类之间有依赖关系的话.不利于功能的拓展和维护,由于仅仅要改动一个对象,其他关联的对象都得进行改动. 一.uml建模: 二.代码实现 /** * 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与类之间有依赖关系的话. * * 不利于功能的拓展和维护.由于仅仅要改动一个对象,…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml建模不熟的能够參考我的还有一篇博文uml建模. 首先.个人认为模式的设计就是一个将变化的东西和不变(稳定)的东西分离的过程. 咱们的应用中可能有非常多须要改变的地方,而模式要做的就是把它们"抽取"出来并进行"封装"和"实现",因此很多其它的时候咱们是…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一样.能够将类与类之间的关系配置到配置文件里,而外观模式就是将他们的 关系放在一个Facade类中,减少了类与类之间的耦合度,该模式中没有涉及到接口. 一.uml建模: 二.代码实现: /** * 演示样例:外观模式,也称门面模式 * * 长处:为了解决类与类之间的依赖关系.减少了类与类之间的耦合度…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39804057 命令模式(Command):将"请求"(命令/口令)封装成一个对象,以便使用不同的请求.队列或者日志来參数化其对象. 命令模式也支持撤销操作.命令模式的目的就是达到命令的发出者和运行者之间解耦,实现请求和运行分开. 一.uml建模 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGh5X3ljdQ==/font/5a6L…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些操作.比方咱有的时候打官司须要请律师,由于律师在法律方面有专长,能够替咱进行操作表达咱的想法,这就是代理的意思.代理模式分为两类:1.静态代理(不使用jdk里面的方法):2.动态代理(使用jdk里面的InvocationHandler和Proxy).以下请看演示样例: 一.静态代理 1.uml建模:…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40008711 桥接模式(Bridge): 把事物和其详细实现分开(抽象化与实现化解耦),使他们能够各自独立的变化.如果你的电脑是双系统(WinXP.Win7).并且都安装了mysql.oracle.sqlserver.DB2这4种数据库,那么你有2*4种选择去连接数据库.按寻常的写法.咱要写2*4个类.可是使用了桥接模式,你仅仅需写2+4个类,能够看出桥接模式事实上就是一种将N*M转化成…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类能够再不改变算法结构的情况下,又一次定义算法中的某些步骤.简而言之:模板方法定义了一个算法的步骤.并同意子类为一个或多个步骤提供实现. 一.uml建模: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGh5…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模式则是将各种产品集中起来进行管理. 简单起见,就拿之前的工厂方法模式进行改动一下就能够得到建造者模式. 一.uml建模: 二.代码实现 /** * 演示样例:建造者模式 * * 与工厂模式的差别:工厂类模式提供的是创建单个类.而建造者模式则是将各种产品集中起来进行管理 */ interface Se…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39760895 工厂方法模式(Factory Method) 工厂方法:顾名思义,就是调用工厂里的方法来生产对象(产品)的. 工厂方法实现方式有3种: 一.普通工厂模式.就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 1.uml建模图: 2.代码实现 /** * 演示样例(一):普通工厂方法 * * 缺点:假设传递的字符串出错,则不能正确创建对象 */ interface S…
Java 设计模式系列(二十)状态模式 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式.状态模式允许一个对象在其内部状态改变的时候改变其行为.这个对象看上去就像是改变了它的类一样. 一.状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类.状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变.状态模式的示意性类图如下所示: Context:…
职责链模式(Chain Of Responsibility Pattern) 职责链模式(Chain Of Responsibility Pattern):属于对象的行为模式.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 职责链模式UML图 职责链模式涉及的角色 抽象处理者(Handler)角色:定义出一个处理请求的接口.如果需要,接口可以定义 出一个方法以设定和返回对下家的引用.这个角色通常由一…
http://www.runoob.com/design-pattern/singleton-pattern.html…
1.什么是模板模式? Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. 模板方法模式(Template Method Pattern):定义一…
1. 模板方法的一个实例 这一节主要来学习一下设计模式中的模板方法模式.我们先来看一个例子:假如现在老板让你做一个汽车的模型,要求只要完成基本功能即可,不考虑扩展性,那你会怎么做呢?我们首先会根据经验设计一个类图: 由这个类图可知,非常简单的实现了悍马车,该车有两个型号H1和H2.那现在我们开始实现这两个型号的悍马车,首先我们得把抽象类写好,然后两个不同的模型实现类通过简单的继承就可以实现要求.首先看看抽象类的代码: public abstract class HummerModel { pub…
​ 一直都想对设计模式有一个深刻的认识,这样对于阅读源码的时候就不会那么吃力了.于是有了想要记录下设计模式的笔记.打算从自己不怎么熟悉的设计模式开始写,里面穿插着一点自己的想法,希望自己写完后,会又一个更深刻的理解和流畅的表述. 介绍 ​ 为请求创建了一个接受者的链,通常一个接收者包含下一个接受者的引用,如果该对象不能处理该请求,就传给下一个.依次类推,直到有处理的对象为止. 应用实例:jsp servlet的Filter,js中的事件冒泡 例子 ​ 通过一个例子来深刻的认识他.以前古代女子都遵…
今天LZ带给大家的是装饰者模式,提起这个设计模式,LZ心里一阵激动,这是LZ学习JAVA以来接触的第一个设计模式,也许也是各位接触的第一个设计模式.记得当初老师在讲IO的时候就提到过它:“是你还有你,一切拜托你.”没错,这就是装饰者模式最简洁的定义了.下面LZ引出标准的定义(出自百度百科):装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. ex:工厂制作上衣,白上衣是30,蓝上衣40,红上衣50,另外还有往衣服上绣的…
简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实现添加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍另外一种工厂模式--工厂方法模式. 1 日志记录器的设计 Sunny软件公司欲开发一个系统执行日志记录器(Logger).该记录器能够通过多种途径保存系统的执行日志,如通过文件记录或数据库记录,用户能够通过改动配置文件灵活地更换日志记录方式. 在设…
代理模式是经常使用的结构型设计模式之中的一个,当无法直接訪问某个对象或訪问某个对象存在困难时能够通过一个代理对象来间接訪问,为了保证client使用的透明性,所訪问的真实对象与代理对象须要实现同样的接口.依据代理模式的使用目的不同,代理模式又能够分为多种类型.比如保护代理.远程代理.虚拟代理.缓冲代理等,它们应用于不同的场合,满足用户的不同需求. 1 代理模式概述 近年来.代购已逐步成为电子商务的一个重要分支.何谓代购.简单来说就是找人帮忙购买所须要的商品,当然你可能须要向实施代购的人支付一定的…
一,定义:  代理模式(Proxy):为其它对象提供一种代理以控制对这个对象的訪问. 二.其类图: 三,分类一:静态代理 1,介绍:也就是须要我们为目标对象编写一个代理对象,在编译期就生成了这个代理对象.然后通过訪问这个代理,来实现目标对象某些功能. 2,简单应用:在这里我们看一个简单的登录登出的样例: 登录功能的接口: [java] view plaincopyprint" style="color:rgb(160,160,160); text-decoration:none; ba…
工厂方法模式 属于23中设计模式中创建型类型. 核心思想:工厂提供创建对象的接口,由子类决定实例化哪一个子类. 来源 ​ 设计模式之禅中的例子,女娲造人,通过八卦炉来进行造人,没有烧熟的为白人,烧太熟的为黑人,刚好的为黄种人的例子进行程序展示 女娲作为client,八卦炉为工厂类,人类为具体实现类,有皮肤的区别. UML类图 图一 Factory: 工厂类的接口,根据类类型,提供只能创建Human子类,或者子孙类的方法. HumanFactory: 工厂类的具体实现,通过反射获取该对象. Hum…
介绍 ​ 我尽量用最少的语言解释总结: ​ Java23种设计模式之一,属于结构型模式,允许向一个现有的对象添加新的功能,不改变其结构. 应用实例: ​ 给英雄联盟种的射手,添加不同的装备.先装备攻速鞋,在装备电刀,最后装备无尽 uml类图如下 主要代码如下 ADC类: /** * @ClassName ADC * @Description 英雄联盟射手 * @Author ouyangkang * @Date 2018-11-13 08:49 **/ public interface ADC…
1. 单例模式的定义 单例模式(Singleton Pattern)是一个比較简单的模式.其原始定义例如以下:Ensure a class has only one instance, and provide a global point of access to it. 即确保仅仅有一个实例,并且自行实例化并向整个系统提供这个实例.单例模式的通用类例如以下图所看到的: Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中仅仅产生一个实例.而且是自行实例化的(在Si…
Hello,又是拖了几天更,实在是忙的要死,有时候忙累了,真的就是倒头睡的那种,刚好今天闲下来了.今天来更新一篇建造者模式. 其实建造者模式,我们已经在上一节已经有了解过了.只不过是上一节没有提到这样的一个概念.可能大家都觉得抽象工厂模式一般都是那样用的,其实里面已经包含了我们这一节的内容. 且听我细细道来. 简介 建造者模式 又称作Builder 模式,它将一个复杂对象 拆分成多个小组件,将一个个小组件组装成复杂的对象.这就是建造者模式. 举个例子 比如我们的电脑:它是一个复杂对象,我们可以将…
上一节我们已经学习了原型模式,稍微复习一下:通过重写Object 类的clone() 方法实现浅克隆,浅克隆也要实现Cloneable 标记接口.而深克隆则是将对象通过序列化和反序列化 的方式进行创建和还原. 本小结将学习的是工厂模式,这个模式在平时是特别常用的,还需好好理解.我也将举一些例子给大家 . 从生活出发 假设我们今天不想做饭,想出去吃饭.肯定选定一家好吃的川菜馆,然后我们找好位置坐下,给厨师说,我想吃糖醋排骨. 稍微等待几分钟.菜就可以做好,然后给你呈上来. 这是一个很经典的例子,我…
模式角色与结构: 示例代码:(本示例在具体状态类中实现状态切换,也可以在环境类中实现状态切换.状态模式一定程度上违背开闭原则) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CSharp.DesignPattern.StatePattern { class Program { static void Main(string[] args) { Acco…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40031567 今天来对这23种设计模式做个总结.咱使用设计模式的目的是为了可重用代码.让代码更easy被他人理解.保证代码可靠性.当然设计模式并非万能的.项目中的实际问题还有详细分析. 咱不能为了使用设计模式而使用,而是在分析问题的过程中.想到使用某种设计模式能达到咱须要的效果,并且比不使用设计模式更有优势.那么咱该考虑使用设计模式了. 一.设计模式的一般分类 创建型(Creator)模…
maowang I am a slow walker,but I never walk backwards! 博客园 首页 新随笔 联系 订阅 管理 随笔 - 125  文章 - 0  评论 - 123 Java开发中的23种设计模式详解(转)   设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性…
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周…