`
kinkding
  • 浏览: 150854 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式-学习

    博客分类:
  • JAVA
阅读更多

设计模式主要包含三个部分:场景(上下文)、问题、解决方案。


设计模式包含五个要素:名称、环境、问题、解决方案、效果。


模式可以分为创建型、结构型、行为型三种。


可扩展性是由开闭 原则、里氏代换原则、依赖倒转原则和组合 /聚合复用原则所保证


几个原则的分析:
  1. 开闭原则:“Software entities should be open for extension,but closed for modification”。对扩展开放、对修改关闭。目标是做到不修改现有代码的基础上,扩展系统的功能。实现开闭原则的关键是“抽象”,对系统的行为进行尽可能的抽象,使得抽象层可以对应一个或多个具体的行为实现。
  2. 里氏代换原则(LSP):“Subtypes must be substitutable for their base types”,也即子类必须可替换他们的基类,替换之后,系统的功能没有发生改变。该原则是研究继承的原则:如果实现的继承关系不满足该原则,则该关系不成立。相关的实例有:正方形不是长方形,鸵鸟不是鸟等。对第一个实例,可考虑将设置长度、宽度的方法合并成一个方法。对于第一个实例,可考虑改进鸟类的设计:可参考Head Frist design pattern。
  3. 依赖倒置原则:目的在改变传统的过程化设计方法中,高层次模块依赖低层次模块,抽象层依赖于具体层的方式。依赖倒置目的即将该方式进行倒转。抽象不应该依赖于细节,也即“需要针对接口编程”。接口是实现插件化的关键,提升系统的灵活性。
  4. 组合聚合复用原则:“ Favor object composition over class inheritance”,尽量使用组合聚合,而不是继承。基于面向对象编程,依赖于抽象而不是具体的原则,假定类A的功能在新的B类中需要使用,可选择两种方式:1)使得A成为B的一部分(组合聚合方式);2)使得B继承于A。如果A本身没有进行相应的抽象,则方法2就带来了依赖和耦合的问题。

单例模式:其典型实现有第一次调用实例化和类加载就实例化两种差别。

装饰模式:动态给对象添加一些额外的职责,例如JAVA IO API 就是采用了该模式。

 

适配器模式:对类的接口进行变换,使得原本不匹配的两者之间能一起工作。在生产系统中,广泛采用的工作流相关的entryadapter,forwardadapter等。

模板模式:设计一个抽象类,将部分逻辑以具体方法的形式实现,同时申明一些抽象方法迫使子类实现剩余的逻辑。这样,子类可以替换父类的可变部分,但改变不了模板方法所代表的顶级逻辑。

门面模式:外部与子系统的通信,必须通过一个统一的门面对象进行。这样可以简化子系统的接口同时提升子系统的独立性和可

代理模式:给原始对象提供一个代理,由代理类来控制对原对象的引用。(代理和门面的差别是:代理目的是控制原对象的引用,门面目的是提供统一的接口,一般来说,门面会需要统筹多个功能对象)。

分享到:
评论

相关推荐

    C++设计模式--基于Qt4开源跨平台开发框架

    通过学习《C++设计模式--基于Qt4开源跨平台开发框架》,开发者不仅可以掌握设计模式的本质和应用场景,还能深入理解Qt4框架的强大功能。结合两者,能够提高代码质量,降低维护成本,同时实现高效且可靠的跨平台应用...

    5C++设计模式--基于Qt4开源跨平台开发框架 完整清晰版中文PDF.zip

    好东西一定得分享,自己现阶段需要好好学习一下QT。C++设计模式--基于Qt4开源跨平台开发框架 完整清晰版中文PDF。好东西而且分数不贵!解压密码qt。

    设计模式---桥接模式

    桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,特别是当需要为同一抽象提供多种实现或者需要独立地改变它们时。 ...

    设计模式-Java语言中的应用

    通过阅读《设计模式-Java语言中的应用》,读者不仅可以掌握设计模式的基本概念和原理,还能学习到如何在实际项目中选择合适的设计模式,以及如何优雅地在Java代码中实现这些模式。这将有助于提升开发者的编程技巧,...

    软件设计模式--填空题+简答题(复习7).rar

    此资源主要包含填空题和简答题,旨在帮助学习者巩固对设计模式的理解,并为考试或项目开发做好准备。 1. **设计模式的基本概念**:设计模式并非具体的代码实现,而是一种描述在特定软件设计中常见问题的解决方案...

    Java设计模式----通俗易懂版

    通过这个"通俗易懂版"的学习资源,你将能够深入理解每种设计模式的原理,掌握如何在实际项目中应用它们,提升代码的可维护性和复用性。阅读《设计模式_20090916.pdf》文档,结合具体的代码示例,相信你将能够更好地...

    JAVA设计模式--程序设计--反射--注解--泛型

    Java设计模式、程序设计、反射、注解和泛型是Java开发中的核心概念,它们各自在不同的场景下发挥着重要作用,构建出高效、可维护的软件系统。 首先,Java设计模式是面向对象编程中的一种最佳实践,是解决常见问题的...

    JAVA设计模式-chm版

    三、学习设计模式的方法: 1. 阅读经典书籍,如《设计模式:可复用面向对象软件的基础》(GOF设计模式)。 2. 实践编程,将所学应用到实际项目中。 3. 分析和重构现有代码,找出并应用设计模式。 4. 参与讨论和分享...

    C++设计模式-好书

    通过本书的学习,读者不仅能够掌握这些设计模式的核心概念,还能通过具体的代码示例加深理解。 #### 二、创建型模式 创建型模式关注的是对象的创建机制,它们使得系统在使用对象时无需知道具体的类名。 1. **...

    设计模式精解-学习设计模式的好资料

    学习设计模式的资料,书中阐述了作者对设计模式的理解以及在程序设计中遇到问题该用什么样的模式去解决。

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

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

    设计模式-王翔 全本

    在阅读《设计模式》.pdf的过程中,读者将有机会学习到如何运用这些模式来提升软件设计的质量,提高代码的可读性和可维护性。这不仅有助于个人技能的提升,也有利于团队间的沟通和协作,因为设计模式提供了一种共同的...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    ### GOF设计模式详解 #### 一、设计模式概述 **设计模式**(Design Patterns)是软件工程中的一个重要...通过学习和应用设计模式,我们可以提高代码的质量,减少开发时间,同时也能够促进团队成员之间的交流和协作。

    C#语法,数据库实例,设计模式----学习C#的必备资料,一应俱全!

    本资料包涵盖了C#语法、数据库实例以及设计模式三大核心领域,是学习C#不可多得的资源。 首先,我们来深入探讨C#语法。C#的语法结构简洁而严谨,它继承了C++和Java的很多特性,同时也引入了许多新的概念。基础语法...

    设计模式-华工课件 设计模式

    华工的课件可能会涵盖以上所述的设计模式,并结合实际案例进行深入讲解,以帮助学习者理解和掌握这些模式。软件测试-2009-11.rar文件可能是课程中的另一部分,可能涉及软件测试理论与实践,与设计模式相辅相成,共同...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    设计模式的学习过程通常分为四个阶段:学习、表达、教授、记录。每个阶段都需要不同的技能和深度的理解。 #### 0.2 设计模式解析后记 在完成所有设计模式的学习和解析之后,开发者会发现自己已经进入了一个新的...

    学习-学习平台-学习平台源码-学习平台java代码-基于Web的学习平台设计与实现-学习平台设计与实现-学习项目代码-java

    学习-学习平台-学习平台源码-学习平台java代码-学习平台设计与实现-基于springboot的学习平台-基于Web的学习平台设计与实现-学习网站-学习网站源码-学习网站java代码-学习项目-学习项目代码-学习系统-学习系统源码-...

Global site tag (gtag.js) - Google Analytics