Java--设计模式心得体会

1、策略模式:

策略模式就是将能够通用的算法,封装成不同的组件,实现同一个接口,使之可以互换。

例子:SpringMVC的9大组件,都采用策略模式。比如HandlerMethodArgumentResolver,有非常多不同的实现类,这些实现类都可以互相替换来处理不同类型的参数,这就是策略模式。

策略模式与模板方法模式的区别:比如一个抽象类有一个抽象方法,每个实现该抽象方法的具体实现都不同,就是模板方法模式,一般在抽象类中会有逻辑处理,只是用到了抽象的模板方法时,交给具体的子类去不同实现。

如果一个模板方法,被子类实现时,实现方式大都相同,比如模板方法为处理字符(10个子类可能只有两种实现,一种是处理为UTF-8,一种是处理成GBK),那么这个模板方法就应该使用策略模式。

2、观察者模式:

观察者模式就是将“观察者”注册给“被观察者”,当被观察者发生改变时,能够及时的通知所有观察者。

例子:比如listener或者事件触发等,都是观察者模式

3、装饰者模式:

装饰者模式就是在不必改变原类文件和使用继承的情况下,动态的扩展对象的的功能。比如你有一个真实对象,有一个包装对象,两个对象都必须实现同一个接口A;但是在进行包装的时候,包装对象需要引用真实对象,然后在真实对象的基础上进行功能扩展,最后返回的都是接口A的对象。但是已经被包装过了,扩展了功能。

例子:Java里面的Inputstream与OutputStream就是典型的装饰者模式。

4、工厂方法模式

工厂方法模式就是定义一个创建对象的接口,里面有一个创建对象的方法。通过继承或者实现,将对象的创建交给子类。而调用者只用使用接口就可以了,不用关心具体的对象是怎么创建出来的。

5、抽象工厂模式

抽象工厂模式就是定义一个为创建一组(多个)相关或者相依赖的对象的接口,而调用者无需关心具体的创建对象的实现类。

工厂方法模式与抽象工厂模式的区别:当抽象工厂模式定义的接口中只能创建一个对象,那么“抽象工厂模式”就退化成为了“工厂方法模式”。

6、单例模式

单例模式这个就不多说了,哈哈,地球人都知道。

7、命令模式

命令模式就是把请求封装成命令对象,“调用者”就是将“命令对象”传递给“处理对象”。

8、适配器模式

适配器模式就是将一个接口转换成为另一个接口。

9、外观模式

外观模式提供了一个统一的接口,用来访问系统中的一群接口。外观模式定义了一个高层接口,让使用变得更加容易(不用再去调用一群接口,外观接口已经将一群接口封装好了)。

10、模板方法模式

模仿方法模式定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。

(让子类来实现具体的抽象方法)

11、迭代器模式

迭代器模式就是Iterator接口,使得客户可以顺序得访问对象中的各个元素,又不暴露对象内部的细节。

12、组合模式

当你将对象的组合(多个对象)组成树结构来展现,那么不管你这个对象是节点(还包含子节点),还是叶子节点(不包含子节点),都可以用一致的方式进行处理。

13、状态模式

状态模式是指当前对象把处理自己不同状态的的行为对象,都封装成为自己的属性。当状态发生改变时,调用不同的行为对象,执行不同的操作。(看起来就好像类发生了改变一样)

14、代理模式

为另一个对象提供一个替身或占位符以访问这个对象(包装一个对象,并控制对它的访问)

15、复合模式

复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。(MVC模式就是典型的符合模式;其中Model是观察者模式,发生改变后通知View;View是组合模式,通过各种不同的组件嵌套组成一个完整的View展现用户界面;Controller是策略模式,不同的View可以使用不同的Controller处理不同的业务)

16、桥接模式

17、建造者(生成器)模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Spring里面的FactoryBean就是建造者模式

18、责任链模式

使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。(责任链就是一个链表结构,头结点处理完成以后再决定是否要交由下一个节点继续处理,直到没有下一个节点或者其中对象终止责任链)

19、蝇量模式(享元模式)Flyweight Pattern

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

应用实例: JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。

20、解释器模式

21、中介者模式

中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

22、备忘录模式

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

应用实例: 1、后悔药。 2、打游戏时的存档。 3、Windows 里的 ctri + z。 4、IE 中的后退。 4、数据库的事务管理。

23、原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

应用实例: 1、细胞分裂。 2、JAVA 中的 Object clone() 方法。3、Java序列化与反序列化可以实现深度克隆

24、访问者模式

访问者模式拥有访问者类,与被访问元素类。元素类通过接受访问者类对象,并且将自身的引用交给访问者,这样访问者就可以使用元素类。

/**
*ComputerPart就是被访问的元素
*ComputerPart通过accept方法接收访问者
*ComputerPartVisitor就是访问者
*/
public interface class ComputerPart {
   public void accept(ComputerPartVisitor computerPartVisitor);
}

/**
*Keyboard就是被访问的元素
*Keyboard实现ComputerPart接口,通过accept方法接收访问者
*Keyboard通过回调访问者computerPartVisitor的visit方法,将自身对象*传给访问者,访问者便可以使用被访问的元素了
*/
public class Keyboard  implements ComputerPart {

   @Override
   public void accept(ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit(this);
   }
}
时间: 2024-10-12 21:05:55

Java--设计模式心得体会的相关文章

学习JAVA的心得体会

面向对象Java程序与设计这门选修课,说实话,我认为的确是一门实用性很强的课程.但是要想上好这门课程,我们必须要有一定的基础,否则上这门课,你一定是听不懂的,最后让你失去兴趣,在最后,一学期下来,我们可能一无所获,就知道了老师口里经常喊的“class”.“public”等等.老师让我们采用分组学习的方法,我们既可以看到其他组员不同的学习方法,取其精华去其糟粕.又可以与其他组之间构成竞争,彼此之间相互学习,共同进步. 学习了半年的JAVA, 我更加明白了信心.恒心.毅力是的重要性.这是我们必须具备

AngularJS心得体会

AngularJS早些时候有过了解,知道这是一个JS的MVC框架,同类型的框架还有Backbone等.这次是由于项目需要,学习了两天的Angular后开始着手改之前的项目代码,这里大概说一下这一周学习Angular的心得体会吧. 首相,使用Angular最大的感受就是它的设计思路完全不同于Jquery,jquery更倾向于对Dom的操作:而使用Angular则需要你有一个全局的认识,你必须知道你想要做成什么样子才可以下手去做,所以我感觉ng对前端开发的要求比jquery要高一些.先来看看Angu

java设计模式--基础思想总结1

看设计模式的相关书籍也有一段时间了,一开始其实是抱着作为java三大框架的基础知识储备来学习的,不过到后来,才发现,在设计模式的一些准则装饰下,java的面向对象威力才真正地体现出来,后面的将会陆续地总结设计模式学习过程中的一些心得体会,这篇作是个人理解设计模式中的一些核心思想的简单总结,但是也是我认为在设计模式中最核心的部分思想了. 一.软件工程的设计尝试 软件工程的一些要求.在软件工程中,最基本的要求便是可重用行以及扩展性,前者要求系统的设计在代码层面可以有良好的组织结构以便公共代码可以一次

编程方法心得体会

编程学习心得和方法(转载,供新手参考)   即便是高级编程人员,像那些为开发软件工作的类库和组件高手,他们也不敢说自己精通每一种语言. 事实就是这样,每一种语言有着它们相似而又不同的语法,它们有着不同的关键字,发展出了各种各样的类库,它们的函数或者方法的声明定义都有不同,更多的差异不为我们所知. 每一种语言,它都有着太多的东西需要我们去理解和记忆,我们没有时间和精力做得太多. 对于初学者,我们最不应该急于求成,更不要试图一次性学习所有语言.事实上,我们可以选取某种语言学习.每一种语言都有着自己的

关于Solr的使用总结的心得体会

摘要:在项目中使用Solr作为搜索引擎对大数据量创建索引,提供服务,本文是作者对Solr的使用总结的一点心得体会, 具体包括使用DataImportHandler从数据库中近实时同步数据.测试Solr创建索引的性能.以及测试Solr的搜索效率总结等. 具体搜索引擎概念.Solr搭建方法.数据库mysql使用方法,假设读者已有了基础.本文操作均是在linux上进行的. 1.      Solr 1.1  Solr从数据库中读取数据并创建索引速度(使用DataImportHandler) l 一次性

Java设计模式之观察者模式(Observer Pattern)

Observer Pattern 是一种常用的设计模式,它是一种事件监听模型.该模式有两个角色,一个是Subject, 另一个是Observer.Subject 保存有多个Observer的引用,一旦特定的事件发生,Subject会通知它所有的Observer,Observer得到该通知后执行相关程序逻辑.其中,Observer只有先向Subject注册后才能被Subject知晓.这就像订报纸,只有我们向出版社提出订报的申请,出版社才会把我们列入订阅者名单,然后每当新报纸印好时,出版社会通知订阅

菜鸟版JAVA设计模式—从火锅底料到装饰器模式

今天开始学历了JAVA设计模式中的装饰模式,照例还是写下自己理解的心得吧. 装饰器模式,啥是装饰器模式?带着这个问题,咱们好好的去火锅店吃个火锅. "老板,来份全辣锅底,不要给我用装饰器模式来配料!"我特地狠狠的强调了最后一句话. 不到一会,老板给我端来了一个火锅和几个盘子,火锅里装了盐水,而盘子里放了辣椒,花椒,茴香,大蒜等佐料.......... 这时候大家可能就需要问了,这咋吃啊...难道让我自己配料么? 这便是是我们的矛盾了!客户需要的一盘已经配好料的火锅汤底,但是我们初期给用

Java设计模式之工厂模式(Factory模式)介绍(转载)

原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工厂.Java工厂模式举例等内容,需要的朋友可以参考下 工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经

菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同

节前把3个设计模式的学习心得分享了一下,分别是适配器模式,装饰模式,代理模式. 但是似乎越写越有些迷糊,这三种模式都有着一些大同小异的地方,总是有些搞不清. 今天再重新学习下,把学习心得分享给大家一下.这次是结合的我工作中的实际项目. 设计模式,其实是一种解决方法,JAVA作为一种面向对象的语言,对于所有的设计模式在实现上,总是少不了对接口的实现,对抽象类的继承,有时候似乎是为了去实现接口而去写接口,所以在这三种模式的说明代码中,我们都定义了接口这些东西,所以才有了现在的混淆. 先不厌其烦的介绍

第二章 搭建Android开发环境 心得体会

第二章 搭建Android开发环境 心得体会 通过学习Android深度探索(卷1)HAL与驱动开发的第二章搭建Android开发环境,我掌握了android开发环境搭建的流程. 1 下载Android SDK http://code.google.com/android/download.html 这是官方网址,进入后跟着流程走,选择适合于自己平台(这里是Windows)的SDK包下载.下载后直接解压就可以使用了. 为了在DOS控制台中直接使用SDK的工具,可以将SDK的目录添加到Window