`
liang3307
  • 浏览: 13265 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

设计模式

 
阅读更多

      之前11年从第一家公司离职,硬着头皮看完了《设计模式》,书也厚,但是也太在意了看书的量,对代码的设计接触也还少,有些道理还不清晰,现在有空进行整理下,自己以后设计了也可常温古下,使用到。

所谓模式:就是解决问题,置胜的套路。

      3大分类,共24个模式。

创建:

       简单工厂模式 Simple Factory:

                   通过传递字符串产生不同的实现类,通过静态方法提供返回实现类,通过方法返回实现类。

像spring  的 bean factory。

实际工作中,相似功能,可以用此模式。

uml: 产品的抽象类,产品的多个实现,工厂类。

 

     工厂模式:

           为了开闭原则,如果增加产品,需要修工厂的方法。

uml: 产品的抽象类,产品的多个实现,抽象工厂,工厂实现类。

这里可以看出sprin的bean factory,通过xml来定义类的信息。

 

      抽象工厂模式 Abstract Factory:

 分:产品的抽象类,产品的多个实现类,系列工厂抽象类,系列的工厂的实现

这儿主要是产品是一个系列,当多个系列时候,使用。

 

单例模式 Signal:

     保证一个类只有一个实列,并提供一个访问点。

如:log4j,struts1 的action单列,spring默认get bean

实际项目中:如果一个资源非常昂贵,可以考虑用单例,在单列类内部控制资源使用

注意:虽然类是单列,单还是可以通过 类的序列化到io中,再反序列化,得到多个实例,靠君子了。

 

原型模式:cloneable

   注意浅复制,深复制问题

java语言只需要实现cloneable接口,我们就可以这个类做原型了。

javascript:property

 

 

建造者模式 Builder:

   uml:分产品,建造者抽象类,建造者实现类,使用人。 

   建造者是:创建这个产品属性的类

报名时候:活动,注册,预约的报名,可以创建不同的建造者来创建默认的信息。 

实际中:如果一个类的实例化需要补充的信息比较多。

 

和工厂的区分:工厂注重创建,建造者,注重构建一个对象。

 

结构型:

   适配器模式adapter 

uml:客户角色(Client),目标角色(target),被适配角色(Adaptee),适配角色(Adapte)

实际中:原来的系统要提供外部使用,对方置顶了他的标准,你的业务只能去适配

分:

类的适配器:  类的继承

对象的适配器:组合复用

接口的适配器:包装下接口的空实现,swing

 

外观模式 Facade

uml:外观角色,子系统角色,客户

 

其实常用的mvc开发:action 就是提供一个门面给用户使用。

经常soa系统中提供外部接口调用:多个业务类的适配组合成一个业务。

 

 桥接模式 Bridge:

   uml:抽象类,扩充抽象类,实现类,具体实现类。

可能比较难理解,jdbc是j2ee标准,java开发都用到它,在整个系统看来,jdbc的具体实现和业务系统通过桥接模式来划分出来开来。 jdbc和dao

 

装饰器模式 Decorator

   分:抽象组件角色,具体组件角色,抽象装饰器,具体装饰器

实例中:java io。

 

外观强调:提供的门面的调用,具体实现可采用:适配器,装饰器实现。

而适配器强调这个完成这个功能,装饰器:动态实现这些功能。

 

享元模式:

   运用共享技术有效地支持大量细粒度细的对象。

   uml:抽象享元类,具体享元类,非共享具体享元类,享元工厂类

实际中:你java中的string的内存分配,连接池

 

代理模式 Proxy:

    uml:代理角色,抽象主题角色,真实主题角色

强调对: 控制对对象的访问

 

 

行为型模式:

 责任链模式 Chain of Responsibility

uml:抽象处理者,具体处理者 客户类

常遇到:strut2的链。

实际中:你的业务类通过判断,有非常多的处理者,参考使用。你的调用层无需知道需要那个处理者,只需要保持后继的引用,不需要所有的引用。循环调用。当然考虑下实例化的消耗。

 

命令模式 Command

uml:抽象命令类,具体命令类,调用者 invoker,接受者 Receiver,客户类 client

平时用到的:mvc的 框架的调用action,sql的调用

 

迭代模式   iterator

uml:抽象迭代器,具体迭代器,抽象聚合类,具体聚合类

 

中介者模式 Mediator

uml:抽象中介者,具体中介者,抽象同事类,具体同事类,

 

观察者模式 Observer

   uml:抽象目标,具体目标,观察者(有update 回调),具体观察者

 

模板模式 Template 

分:抽象类,具体抽象类

     强调固定的流程。

 

策略模式 Strategy:

 分Context 上下文环境,抽象策略,各种实现的策略。

重点是封装不同的算法和行为,不同的场景下可以相互替换

实际中如:缓存的失效策略,不同的支付。

 

状态模式 State :

  uml:Context 上下文环境,抽象状态,各种实现的状态

对象在其内部状改变时改变它的行为

实际中:红绿黄等,电梯的不同状态变化。

 

状态:有明显的状态过渡,希望client知道内部状态的变化。

策略:调用类选择了策略,始终使用。

 

 

备忘录模式  Memento 

uml:原发器,备忘录,负责人。

 

 

访问者模式  Visitor

uml:抽象访问者,具体访问者,抽象元素,具体元素,对象结构

使用语言的多态

 

实际:dom4j解析dom树

 

 

分享到:
评论

相关推荐

    人人都懂设计模式 人人都懂设计模式

    人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...

    二十三种设计模式【PDF版】

    主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    GOF设计模式中英文+设计模式精解中英文

    GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...

    Head First 设计模式 +Java设计模式(第2版)

    《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...

    C#设计模式.PDF

    根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...

    设计模式之蝉

    在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...

    设计模式(包含5个设计模式)含源代码报告.rar

    这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...

    python设计模式第2版.pdf

    设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...

    《Java设计模式》课程设计报告.docx

    《Java设计模式》课程设计报告主要探讨了如何利用Java编程语言和MyEclipse集成开发环境来实现基于设计模式的西瓜市场系统。这个项目涵盖了四种重要的设计模式:单例模式、代理模式、建造者模式和抽象工厂模式,为...

    基于Java的设计模式大作业绘图系统【六种设计模式+文档】.zip

    本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...

    新版设计模式手册 - C#设计模式(第二版)

    《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    软件设计模式(java版)习题答案.pdf

    软件设计模式(Java版)习题答案 本资源为软件设计模式(Java版)习题答案,由程细柱编著,人民邮电出版社出版。该资源涵盖了软件设计模式的基础知识,包括软件设计模式的概述、UML中的类图、面向对象的设计原则、...

    设计模式精解- GoF 23种设计模式解析附C++实现源码

    设计模式精解- GoF 23种设计模式解析附C++实现源码 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在...

    Head First设计模式.pdf

    全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出...

    MongoDB应用设计模式

    资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...

    尚硅谷设计模式源码笔记课件.zip

    本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...

    设计模式之美——教你写出高质量代码

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    软件设计模式期末作业

    在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见问题。本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们...

Global site tag (gtag.js) - Google Analytics