`
kinkding
  • 浏览: 150120 次
  • 性别: 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代码中实现这些模式。这将有助于提升开发者的编程技巧,...

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

    通过学习和应用这些设计模式,开发者可以更好地组织代码,提高代码的可扩展性和可维护性。QT4的API设计也鼓励了这些模式的使用,使得开发者能够构建出高效、可复用的跨平台应用程序。对于初学者,理解这些模式并将其...

    Java设计模式-图解-附代码-学习好资料.doc

    Java设计模式-图解-附代码-学习好资料.doc

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

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

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

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

    JAVA设计模式-chm版

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

    时间触发嵌入式系统设计模式--配套光盘

    时间触发嵌入式系统设计模式是一种严谨的系统构建方法,其核心在于确保系统的确定性和可预测性。...通过学习和实践这些设计模式,开发者可以提高他们的系统设计能力,创造出更加稳定和安全的嵌入式解决方案。

    26种设计模式-----pdf

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板。这个压缩包文件名为"26种...通过深入学习和实践这些设计模式,开发者可以进一步提升自己的编程技能,更好地应对各种复杂的软件设计挑战。

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

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

    设计模式-王翔 全本

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

    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