`
jackleechina
  • 浏览: 584629 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

设计模式

 
阅读更多

一) 策略模式

 

很好地解决了继承和接口各自的不足。

1) 继承:因为所有的子类都继承了父类的方法,所以对于部分子类共有的方法,而另一部分子类没有的方法。只能用子类覆盖的方式来解决(要么父类不提供抽象方法,在需要的子类中新增此方法)。

2) 接口:比1) 中红色字的方法更好的方式是使用接口,这样子类更统一,强制子类必须实现某些接口方法。但是这样仍然使得各个子类都必须去实现多个接口。

3) 策略模式:

    要点1:父类中包含“行为组合”变量(声明接口的变量,此父接口变量可指向一组行为中的任何一个)。

    要点2:行为组合——统一的行为接口,每个行为必须继承此接口。

4)体现的编程原则:

     1.针对接口编程,不要针对实现编程

     2.“有一个"(has a)比"是一个"(is a)更好。

 

二) 观察者模式

 

1)记忆方法

 

     a)

     主题:必须有三个方法registerObserver(Observer o),removeObserver(Observer o),notifyObservers(Observer o)。(java。util.Observable: addObserver(),deleteObserver(),notifyObservers()).

     观察者:必须有update()方法(或其他需要的方法,用接口表示。)

     以上两部分都用接口表示出来,让主题和观察者实现这些接口。确保主题和观察者内有这些方法。

 

     b)你中有我,我中有你

     主题:notifyObserver时,调用Observer的update方法。

     观察者:构造函数内,调用主题的registerObserver(Observer o)方法。

 

三) 装饰者模式

     1)记忆方法

           a)装饰者中有两个对象:装饰者和被装饰者。

           b)装饰者必须继承自被装饰者。

     2)调用过程图解有点像递归。

 

四) 工厂模式

 

    1)简单工厂:只是简单的将程序中new的部分(带if else 的参数判断)抽象出来。

    2)工厂方法和抽象工厂方法:工厂方法和抽象工厂方法都有简单工厂的影子,不同的是:工厂方法使用继承,让子类决定要实例化的类是哪一个;而抽象工厂方法使用对象组合(接口或抽象类都可以)。抽象工厂可以理解为多条平行的工厂方法的集合。

     结束语:在设计中,但凡有new的地方(创建对象的地方)就可以引入“工厂”。

 

五) 单件模式

    1)

     要点1:要有一个静态变量;

     要点2:获取静态变量时,判断是否已经生成;已经生成过,就读取,没有生成过就新建一个。

    2)双重检查加锁(volatile)

       第一次检查:为了让程序只有在静态变量uniqueInstance未被创建时才执行“同步”。

       第二次检查:是同步块内原本就需要的。没有它可能会创建多个静态变量uniqueInstance。

       备注:不同现场仍然有可能会分别运行第一次的检查,即不同线程执行第一次检查的总次数多于一次。

   

分享到:
评论

相关推荐

    24种设计模式以及混合设计模式

    设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...

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

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

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

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

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    23种设计模式详解PDF

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

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

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

    设计模式解析.pdf

    ### 设计模式解析:深入理解软件设计的核心原则与实践 #### 标题解析:设计模式解析 设计模式是软件工程领域的重要概念,旨在提供解决常见软件设计问题的模板或指导原则。《设计模式解析》这一标题暗示了书籍将...

    C#设计模式.PDF

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

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

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

    设计模式之蝉

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

    python设计模式第2版.pdf

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

    软件设计模式大作业

    软件设计模式大作业 本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,分别是简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式和观察者模式。该大作业的主要内容包括系统流程、系统类图...

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

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

    软件设计模式(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设计...

    java版本的设计模式的实现demo

    设计模式是软件开发中的经典实践,它们为解决特定问题提供了通用、可复用的解决方案。在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充...

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

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

Global site tag (gtag.js) - Google Analytics