`
rethink
  • 浏览: 16362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java设计模式学习

阅读更多

创建模式

 

一、工厂(Factory)模式

 

工厂模式的几种形态:
1、简单工厂模式,又叫做静态工厂方法(Static Factory Method)模式。
2、工厂方法模式,又称为多态性工厂(Polymorphic Factory)模式。
3、抽象工厂模式,又称工具(Kit或ToolKit)模式。

 

举例:一个项目有这样的功能,就是多格式文件处理,并获取一定信息,由于各种格式的文件的格式不同,所以读取方式不同,就要对应的类进行读取。我是这样处理的,根据传进来的文件名,判断其文件的后缀,然后在工厂类中获取一个对应的读取类的实例。

 

二、单例(Singleton)模式

 

单例就是在整个系统中,只有一个实例。更确切的讲,应该是让jvm一旦为某对象创建了一个引用,就不会在创建的一种模式。

 

注意单例的陷井:多个虚拟机和多个类加载器!在构建b/s架构的应用时,要小心使用,因为创建一个单例是在web服务器的容器共享的,任何用户都可以用。

 

举例:针对数据库连接的单例类。

 

三、建造(Builder)模式

 

如果要创建的对象是复杂的,而且组成对象创建工程的一系列步骤可以按不同的方式来生成不同的对象,这时就应该要考虑使用构造模式,否则你把构造的所有的过程都放在一个对象里面,代码可能会变得很臃肿。如果构造的对象相对简单、各不同对象相对明确,可以考虑用工厂模式。

 

举例:根据用户的选择变化,建造不同的操作界面。

 

四、原型(Prototype)模型

 

原型模式简单的讲就是,克隆并复用原型对象模式。当客户需要创建对象集时,对象大部分(复杂)内容是相似的,并且创建此类对象将花费很多的时间,所 涉及的处理也较多。比如,通过复制具有类似结构代码,并进行修改,来创建一个新的实例,这时可以考虑采用原型模式,这样就不必通过复制修改代码来实现新的 实例,只要克隆一下另一个实例,通过修改相应的属性的值来到达你的目的。

 

原型模式分为两种克隆方式:浅克隆,即改变本类属性不改变引用类信息;深克隆,即全部改变。

 

举例:类似授权模块的处理,管理员组,权限都相同,管理员个人系统不同,那么就可以采用浅克隆的方式,权限类不变,仅是相关属性发生变化。还有帐户模块的处理等。

 


结构模式

 

一、适配器(Adapter)模式

 

把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。其用意是在保留原有类的前提下 (即不改变原来的代码)把一个类的接口转换另一个接口,这样可以让具有不同接口的(原本接口不匹配的)多个类可以一起工作。而如果没有这样的转换,将不能 使用到新的类提供的服务。
适配器可分为类适配器和对象适配器。

 

举例:根据map和set的特性,增加新适配器类,具有迭代功能。

 

二、合成(Composite)模式

 

合成模式可以使用户对象以同样的方式对待单独的对象或复合的对象,合成模式要设计一个公共接口,即可提供给单独的对象使用,也可以供给复合对象使用。使用户类使用单独的对象或者复合的对象,不必关心要如何处理复合对象,只需向复合对象添加单独对象即可。

 

举例:计算磁盘空间,可能仅有单个文件,也可能有文件夹和文件。

 

三、亨元(Flyweight)模式


享元模式是实现对象的共享,减少重复数据的存储,从而减少内存分配的开销。如果要创建同个对象的n个实例,而通常这n个实例中的m个属性是相同的,那么就 会有n*m个相同的数据占据了不同的内存空间,如果n*m的值较大的话,就可以考虑flyweight享元模式了。享元模式就把这m个相同的属性提取出 来,结合单例模式和工厂模式,来实现相同属性值的实例分配到同一块内存空间(占用1*m个内存空间)。这m个属性通常叫内在信息,而其他会动态变化的信息 叫外部信息。

 

举例:公司各部门的名片样本。

 


行为模式

 

一、模板方法(Template Method)模式

 

准备一个抽象类,将部分逻辑以具体方法实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

 

利用该模式可以实现提高代码的复用率,它把各子类相同的方法放在抽象类,避免了编写重复的代码,而其他可变的方法强制型地在各子类各自实现,实现代码规范性。

 

例如struts的Action,要求实现execute方法。原因是在Action内部定义了一个实现其功能的代码架构,用户不必做其他的事情,只要在继承并实现execute方法即可。

 

二、策略(Strategy)模式

 

策略模式是对算法的封装,把使用算法的使用者和算法本身分割开,分派给不同的对象管理。一系列的算法封装到一系列的策略类里面,作为一个抽象策略类 的子类或接口的实现类。使用策略模式也可以提高代码复用率,并且使用者不必涉及到任何的算法代码,只涉及到算法的输入输出值。当要添加算法时,只要写一个 封装该算法的类并向使用者注册即可。

 

举例:商品折扣,根据不同的用户需求,选择不同的折扣策略。

 

三、状态(State)模式

 

状态模式在结构上跟策略模式没什么区别,只是它们的应用则重点不同。一个对象的行为依赖以一些状态的变化而随之变化。采用state状态模式就是把各个不同状态的所以执行的代码分别放到不同的类中。

 

举例:qq状态,根据不同的qq状态,选择不同状态需要做的事情(类)。

 

四、迭代(Iterator)模式

 

迭代模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。利用迭代模式来读取一系列按一定规则来存储的数据,而你不必理会封装的数据存储的结构是怎么样的。

 

举例:set和list都可以通过Iterator来读取数据。

分享到:
评论

相关推荐

    Java设计模式学习.pdf

    文档中描述的是Java设计模式学习笔记,目前涉及了7种设计模式,但没有具体指明这7种模式是什么,计划后续增加更多的模式。虽然文件内容中存在OCR扫描的识别错误,但不影响我们从整体上把握设计模式的脉络和学习方法...

    JAVA设计模式学习【技术文档】

    ### Java设计模式学习概述 #### 标题解读 文档标题为“JAVA设计模式学习【技术文档】”,表明这是一份专注于Java语言的设计模式学习资源。设计模式作为软件工程领域的重要组成部分,它提供了一系列面向对象设计问题...

    java设计模式学习资料

    "java设计模式学习资料"这个资源包含了两本书籍:《Head First 设计模式(中文版)》和《java设计模式》。这两本书都是学习设计模式的宝贵教材,尤其适合初学者,因为它们以通俗易懂的方式阐述了复杂的概念。 ...

    J2EE设计/java设计模式学习资料集合

    这个“J2EE设计/java设计模式学习资料集合”显然是为了帮助开发者深入理解和应用这些模式。 1. **单例模式**: 在J2EE应用中,单例模式用于确保一个类只有一个实例,并提供全局访问点,比如应用服务器中的缓存服务或...

    基于小傅哥PDF的Java设计模式学习源码实践

    本项目为Java设计模式学习实践项目,共计756个文件,其中包含293个Java源文件、97个类定义文件、82个Markdown文档、79个属性文件、69个XML文件、60个批处理脚本文件、9个IntelliJ IDEA项目配置文件、3个Git忽略文件...

    基于《大话设计模式》的Java设计模式学习源码实战

    该项目是一个基于《大话设计模式》的Java设计模式学习源码实战,包含41个文件,其中36个为Java源文件,4个为Markdown文档,以及1个LICENSE文件。通过实际编码实践,帮助开发者深入理解并掌握设计模式的应用。

    基于《大话设计模式》及网络资源的Java设计模式学习源码

    该项目为Java设计模式学习资源,包含216个文件,涵盖161个Java源代码文件、24个PNG图片文件、23个Markdown文件、1个Git忽略文件、1个JAR包文件、1个属性文件以及1个LICENSE文件,旨在帮助开发者通过《大话设计模式》...

    基于Bilibili课程的Java设计模式学习源码

    该项目是一个基于Bilibili课程的个人Java设计模式学习源码集合,包含291个文件,主要涵盖246个Java源文件、17个PNG图片文件、13个XML配置文件,以及少量其他类型文件,如IML、JAR、Gitignore、Properties和Markdown...

    java设计模式学习文档.pdf

    培养学生掌握简单工厂模式、工厂方法模式、单例模式、原型模式、桥接模式、适配器模式、装饰模式、代理模式、命令模式、观察者模式等常用设计模式的设计思想,并掌握在实际软件工程领域中的运用,能够把所学的原理...

    基于《大话设计模式》的Java设计模式学习与源码解析

    本项目为《大话设计模式》书籍内容在Java语言环境下的实践与源码解析,包含152个文件,其中150个为Java源文件,1个为LICENSE文件,旨在深入理解并掌握Java设计模式的应用。

    Java设计模式的教学PPT和源代码

    这个压缩包包含了一份关于Java设计模式的教学PPT和相应的源代码,是进行Java设计模式学习的理想资源。 首先,让我们深入了解一下设计模式的基本概念。设计模式并不直接提供代码实现,而是描述在特定情况下,如何...

    Java设计模式举例原码

    欢迎你的加入Java设计模式学习。 作者介绍: Rohit Joshi works as a Software Engineer in the Consumer Product Sector. He is a Sun Certified Java Programmer. He had worked in projects related to different...

    尚硅谷_韩顺平_图解Java设计模式

    《尚硅谷_韩顺平_图解Java设计模式》是一份详尽的Java设计模式学习资料,由知名教育机构尚硅谷的讲师韩顺平精心编撰。这份笔记全面覆盖了设计模式的重要概念、应用场景以及实战技巧,是Java开发者学习和复习设计模式...

    java设计模式思维导图

    java设计模式整理思维导图,包括23种设计模式。初学者使用

    Java设计模式资料[内含源代码].

    总之,这个压缩包提供的资源是一份宝贵的Java设计模式学习资料,无论你是初学者还是有经验的开发者,都可以从中受益。通过深入学习和实践,你将能够更好地应对复杂的软件设计挑战,提升你的编程技能。

    java设计模式(第二版)+源码

    总之,《java设计模式(第二版)》是一本不可多得的Java设计模式学习资料,它将帮助开发者提升软件设计能力,编写出更优雅、更易于维护的代码。通过阅读这本书,你不仅可以学习到设计模式的原理,还能掌握如何在Java...

Global site tag (gtag.js) - Google Analytics