一) 策略模式
很好地解决了继承和接口各自的不足。
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。
备注:不同现场仍然有可能会分别运行第一次的检查,即不同线程执行第一次检查的总次数多于一次。
分享到:
相关推荐
人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...
主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...
GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...
设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...
《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...
根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...
在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...
这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...
本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
软件设计模式(Java版)习题答案 本资源为软件设计模式(Java版)习题答案,由程细柱编著,人民邮电出版社出版。该资源涵盖了软件设计模式的基础知识,包括软件设计模式的概述、UML中的类图、面向对象的设计原则、...
设计模式精解- GoF 23种设计模式解析附C++实现源码 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在...
全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出...
资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、...
本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式...
“[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...
在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见问题。本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们...