`
huakewoniu
  • 浏览: 46746 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

一些导致重新设计的一般原因,以及解决这些问题的设计模式

阅读更多

重新设计会影响软件系统的许多方面,并且未

曾料到的变化总是代价巨大的。

设计模式可以确保系统能以特定方式变化,从而帮助你避免重新设计系统。每一个设计

模式允许系统结构的某个方面的变化独立于其他方面,这样产生的系统对于某一种特殊变化

将更健壮。

下面阐述了一些导致重新设计的一般原因,以及解决这些问题的设计模式:

1) 通过显式地指定一个类来创建对象在创建对象时指定类名将使你受特定实现的约束

而不是特定接口的约束。这会使未来的变化更复杂。要避免这种情况,应该间接地创建对象。

设计模式: Abstract FactoryFactory MethodP r o t o t y p e 。

2) 对特殊操作的依赖当你为请求指定一个特殊的操作时,完成该请求的方式就固定下

来了。为避免把请求代码写死,你将可以在编译时刻或运行时刻很方便地改变响应请求的方

法。

设计模式: Chain of Resposibility,C o m m a n d

3) 对硬件和软件平台的依赖外部的操作系统接口和应用编程接口( A P I )在不同的软硬件

平台上是不同的。依赖于特定平台的软件将很难移植到其他平台上,甚至都很难跟上本地平

台的更新。所以设计系统时限制其平台相关性就很重要了。

设计模式: Abstract Factory(3.1)B r i d g e ( 4 . 2 )

4) 对对象表示或实现的依赖知道对象怎样表示、保存、定位或实现的客户在对象发生

变化时可能也需要变化。对客户隐藏这些信息能阻止连锁变化。

设计模式: Abstract Factory(3.1)B r i d g e ( 4 . 2 )M e m e n t o ( 5 . 6 )P r o x y ( 4 . 7 )

5) 算法依赖算法在开发和复用时常常被扩展、优化和替代。依赖于某个特定算法的对

象在算法发生变化时不得不变化。因此有可能发生变化的算法应该被孤立起来。

设计模式: B u i l d e r ( 3 . 2 )I t e r a t o r ( 5 . 4 )S t r a t e g y ( 5 . 9 )Template Method(5.10)

Vi s i t o r ( 5 . 11 )

6) 紧耦合紧耦合的类很难独立地被复用,因为它们是互相依赖的。紧耦合产生单块的

系统,要改变或删掉一个类,你必须理解和改变其他许多类。这样的系统是一个很难学习、

移植和维护的密集体。

松散耦合提高了一个类本身被复用的可能性,并且系统更易于学习、移植、修改和扩展。

设计模式使用抽象耦合和分层技术来提高系统的松散耦合性。

设计模式: Abstract Factory(3.1) C o m m a n d ( 5 . 2 )F a c a d e ( 4 . 5 )M e d i a t o r ( 5 . 5 )

Observer(5.7) Chain of Responsibility(5.1)

7) 通过生成子类来扩充功能通常很难通过定义子类来定制对象。每一个新类都有固定

的实现开销(初始化、终止处理等)。定义子类还需要对父类有深入的了解。如,重定义一个操

作可能需要重定义其他操作。一个被重定义的操作可能需要调用继承下来的操作。并且子类

方法会导致类爆炸,因为即使对于一个简单的扩充,你也不得不引入许多新的子类。

一般的对象组合技术和具体的委托技术,是继承之外组合对象行为的另一种灵活方法。

新的功能可以通过以新的方式组合已有对象,而不是通过定义已存在类的子类的方式加到应

用中去。另一方面,过多使用对象组合会使设计难于理解。许多设计模式产生的设计中,你

可以定义一个子类,且将它的实例和已存在实例进行组合来引入定制的功能。

设计模式:B r i d g e ( 4 . 2 )Chain of Responsibility(5.1)C o m p o s i t e ( 4 . 3 )D e c o r a t o r ( 4 . 4 )

O b s e r v e r ( 5 . 7 )S t r a t e g y ( 5 . 9 )

8) 不能方便地对类进行修改有时你不得不改变一个难以修改的类。也许你需要源代码

而又没有(对于商业类库就有这种情况),或者可能对类的任何改变会要求修改许多已存在的其

他子类。设计模式提供在这些情况下对类进行修改的方法。

设计模式: A d a p t e r ( 4 . 1 )D e c o r a t o r ( 4 . 4 )Vi s i t o r ( 5 . 11 )

分享到:
评论

相关推荐

    java设计模式案例

    因为使用设计模式的难点往往不在于模式的实现,而在于很难确定哪种模式可以在现实的应用场景中采用,从而导致了在现实的项目中,面对客户的压力,我们总是采用最直截了当的方法解决问题,来不及多考虑这些方法的优劣...

    韩顺平_Java设计模式笔记.docx

    单例设计模式的优点是提供了全局访问点,缺点是可能会导致资源浪费和性能问题。 五、设计模式的重要性和应用场景 设计模式在软件工程中的重要性体现在软件具有更好的复用性、扩展性、可读性、规范性和稳定性等方面...

    23种设计模式整理pdf

    设计模式是软件开发中的一种解决方案,旨在提高代码的可重用性、可维护性和可扩展性。在这篇文章中,我们将对23种常见的设计模式进行整理和解释。 1. Singleton 模式 Singleton 模式是一种创建型模式,用于限制类的...

    浅析23种软件设计模式

    软件设计模式是软件开发中的一种解决方案,旨在解决软件设计中的各种问题。下面我们将对23种常见的软件设计模式进行浅析。 1. 工厂模式:工厂模式的主要思想是将客户类和工厂类分开,客户类可以向工厂类请求某种...

    设计模式.pdf_电子版_pdf版

    在软件设计中,设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 设计模式可以分为三大类:创建型、结构型和行为型。...

    经典Java23种设计模式.rar

    设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。 Java的23种设计模式 构成模式的四个基本要素: (1)模式名称:一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 (2)问题...

    漫谈设计模式:从面向对象开始(带书签扫描版).刘济华.pdf

    以前的设计模式书籍专注于介绍设计模式,虽然读者了解了这些设计模式,但是仍然不知道如何合理地使用它们,往往导致读者为了使用设计模式而设计,而不是从问题出发,使用设计模式优雅地解决这些问题。本书主要从最...

    论文研究-基于设计模式角色的附加关系检测研究.pdf

    使用设计模式时,类之间的关系应符合规定的解决方案,然而在系统设计时,设计模式中不同角色之间往往会出现附加的关系,从而导致软件实现与预期的不一致。以识别设计模式的附加关系为目标,提出了一种能够自动检测该...

    漫谈设计模式

    以前的设计模式书籍专注于介绍设计模式,虽然读者了解了这些设计模式,但是仍然不知道如何合理地使用它们,往往导致读者为了使用设计模式而设计,而不是从问题出发,使用设计模式优雅地解决这些问题。 《漫谈设计...

    Java设计模式-23种设计模式详解

    Java设计模式是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 设计模式的六大原则 1. 开闭原则...

    IOS设计模式

    1、 IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle) 定义  就一个类而言,应该仅有一个引起它变化的原因。 定义解读  这是六大原则中最简单的一种,通俗点说,就是不存在多个...

    Java面试题-设计模式+设计原则+代理.pdf

    设计模式是软件开发中的一种解决方案,它提供了一种通用的设计方法来解决常见的问题。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 1. Singleton 模式 Singleton模式是一种创建型模式,它的...

    设计模式六大原则与类的六种关系

    设计模式六大原则是软件设计中遵循的一些基本原则,目的是为了使软件设计更加灵活、可维护和可扩展。六大原则分别是:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。 1. 单一...

    23种设计模式-C_版本

    设计模式 - Singleton Pattern 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。这就是 Singleton Pattern 的设计动机。 Singleton ...

    服务设计模式

    本书不仅详细讲解了SOAP、WSDL、RESTful3种Web服务API的风格和20多种常用Web服务设计模式,而且还深入阐述了每一种模式的原理,以及这些模式的适用场景、可以解决的问题、采用之后的影响、详细的解决方案、需要考虑...

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

    之道 》,其中很多观点我看了很受启发,以前我也将"设计模式" 看成一个简单的解决方案,没有从一种高度来看待"设计模式"在软 件中地位,下面是我自己的一些想法: 建筑和软件某些地方是可以来比喻的 特别是中国传统建筑...

    设计模式在mybatis中的应用

    适配器模式主要解决的是由于接口不能兼容而导致类无法使用的问题,这在处理遗留代码以及集成第三方框架的时候用得比较多。其核心原理是:通过组合的方式,将需要适配的类转换成使用者能够使用的接口。 工厂方法模式...

    漫谈设计模式:从面向对象开始

    若想一本书涵盖所有模式,那么《漫谈设计模式:从面向对象开始》将会非常庞大,以前的设计模式书籍专注于介绍设计模式,虽然读者了解了这些设计模式,但是仍然不...而不是从问题出发,使用设计模式优雅地解决这些问题。

    LabVIEW程序设计模式-消息队列型状态机模式[收集].pdf

    LabVIEW程序设计模式-消息队列型状态机模式是一种改进的状态机模式,旨在解决基本状态机模式中的三个问题:状态分类不清晰、缺乏数据共享和错误处理机制、每一个状态分支只能决定后面的一个状态。该模式通过引入书立...

    RSA介绍:了解基于设计模式的开发

    文中还介绍了一些关于设计模式的实例,并告诉您如何快速地建立类图及生成基于这些模式的代码。后继的文章将更详细地阐述本介绍性文章中所涵盖的内容。设计模式是经常发上的设计问题的解决方案。模式描述了如何利用一...

Global site tag (gtag.js) - Google Analytics