设计模式-可复用面向对象软件的基础 [读书笔记]

由于如下笔记中有直接描述是该书的第几节,因此将该书的封面贴下:

Book Title Page



1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。

  在软件设计中可能会遇到很多类似的问题,在每次遇到类似问题时我们不必全都新想办法来解决,而可以复用之前解决类似问题的方案,解决问题多之后就

  会有针对特定问题有特定(相对固定)的方式方法来解决,这相对固定的方式方法就是设计模式,其也算是经验总结。

  开篇有两种在设计模式书籍里面很重要的表格和关系图,分别描述了各设计模式设计支持的可变方面以及各个设计模式之间的关系,具体如下:

 DesignForChange

relationshipofsedignpatterns


2.一般来讲,模式有四个基本要素:模式名称(pattern name),问题(problem),解决方案(solution),效果(consequences)。
3.设计模式确定了所包含的类和实例,他们的角色,协作方式以及职责分配。
4.经典的MVC模式主要用到了Observer,Composite和Strategy三种设计模式。
  MVC包括三类对象,模型Model是应用对象,视图View是它在屏幕上的表示,控制器Controller定义用户界面对用户输入的响应方式
5.1.4节设计模式的编目,简短描述了23中设计模式的作用
6.设计模式依据其目的可以分为创建型(Creational),结构型(Structural),行为型(Behavioral)三种类型。
  创建型:与对象的创建有关(5种) Factory Method,Abstract Factory,Builder,Prototype,Singleton
  结构型:处理类或对象的组合(7种)Adapter,Birdge,Composite,Decorator,Facade,FlyWeight,Proxy
  行为型:对类或对象怎样交互和怎样分配职责进行描述(11种) Interpreter,Template Method,Chain of Responsibility,Command,
                                                     Iterator,Mediator,Mementor,Observer,State,Strategy,Visitor
  设计模式如果根据范围来分,则可以分为类模式和对象模式。
  类模式:处理类和子类之间的关系,这些关系通过继承来建立,编译时刻就已经确定下类,属于静态的。(4种)
  对象模式:处理对象间的关系,这些关系在运行时刻是可以变化的,具有动态性。(20种)
7.各设计模式之间也是有关系的,参看1.5中的关系图,各个相关模式之间加上某些需求就可以转换为另外一个模式。
8.复用方式中类继承与对象组合的区别:
  类继承:白箱复用,父类的实现对子类来说完全是透明的,创建新的类很方便,子类只需要少量的扩展即可形成新的类。
        编译时已经决定继承关系,静态,破坏类的封装性,父类的实现有改动直接影响子类,有可能改动并不使用子类,有牵一发而动全身的影响,
        这个可以通过继承抽象类来缓解,这样父类会有较少的具体实现。
  对象组合:黑箱复用,被组合的对象中只能调用组成成员对象的接口,无法知道其它具体实现,可以通过多态对组合成员对象在运行时动态修改
        不破坏封装性。
  优先是用对象组合,而不是类继承。理想状态下,如果你不是想要去创建行的构件,你应该能够只使用对象组合技术,通过组装已有的构件就能够获得
  你需要的功能。
9.委托是一种组合方法,它使得组合具有与继承同样的复用能力,在委托方式下,有两个对象参与处理一个请求,接收请求的对象将操作委托给它的代理
  者(delegate).这类似于子类将请求将给它的父类处理。State,Strategy,Visitor三种模式较多的运用到委托模式,在State模式中,一个对象将请求
  委托给一个描述当前状态的State对象来处理,在Strategy模式中,一个对象将一个特定的请求委托给一个描述请求执行策略的对象,一个对象只有一个
  状态,但它对不同的请求可以有许多策略。这两种模式的目的都是通过改变委托对象来改变委托对象的行为。在Visitor模式中,对象结构的每个元素上
  的操作总是被委托到Visitor对象上。


  委托是对象组合的特例,它告诉你对象组合作为一个代码复用机制可以替代继承。
10.参数化类型提供了除了类继承和对象组合之外的第三种方法来组合面向对象系统中的行为。这三种复用技术存在着较大的差异,对象组合允许你在
   运行时刻改变被组合的行为,但是它存在间接性,比较低效。类继承允许你提供操作的缺省实现,并通过子类重定义这些操作。参数化类型允许你改变
   类所用到的类型,典型的就是模板类,泛型的使用。类继承和参数化类型都不能在运行时刻被改变,即为静态设计,写代码时可以预见执行结果的。
11.1.6.7节,一般容易导致软件重新设计的原因,在软件设计初期就应该注意在这些情况下采用一些设计模式来使得软件松耦合,能够较为容易的进行修
   改和扩展,总之让软件更加灵活,后期维护和扩充起来比较方便。
   1) 通过显示地指定一个类来创建对象。
      Abstract Factory,Factory Method, Prototype
   2) 对特殊操作的依赖
      Chain of Responsibility,Command
   3) 对硬件和软件平台的依赖
      Abstract Factory, Bridge
   4) 对对象表示或实现的依赖
      Abstract Factory, Bridge, Memento,Proxy
   5) 算法依赖
      Builder,Iterator,Strategy,Template Method,Visitor
   6) 紧耦合
      Abstract Factory, Command, Facade, Mediator,Observer,Chain of Responsibility
   7) 通过生成子类来扩充功能
      Bridge, Chain of Responsibility,Composite,Decorator,Observer,Strategy
   8) 不能方便的对类进行修改
      Adapter,Decorator,Visitor
12.参考1.7中表1-2设计模式所支持的设计的可变方面,通过查看这些内容确定是否有必要使用设计模式,以及使用那个设计模式。
13.skip chapter2
14.创建型模式抽象了实例化过程,它帮助一个系统独立于如何创建,组合和表示它的那些对象。一个类创建型模式是用继承来改变被实例化的类,而一个对象
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 设计模式是一种通过提供可复用的解决方案来解决面向对象软件开发中常见问题的方法。这些问题可能包括对象之间的通信、对象的创建和销毁、以及如何组织代码等。 设计模式能够提供一种标准化的方法来解决这些问题,使得开发人员可以更加高效地构建软件系统。设计模式提供了一种用于描述和交流解决方案的共同语言,使得不同开发人员之间可以更好地合作。 设计模式的另一个重要特点是其可复用性。一旦开发人员学会了某个设计模式,他们可以在不同的项目中重复使用该模式,从而节省开发时间和资源。这种可复用性使得设计模式成为面向对象软件开发的基础之一。 《设计模式复用面向对象软件基础》这本书将深入介绍设计模式的原理、分类和具体实现。通过学习这本书,读者可以掌握常见设计模式的应用方法,并了解如何根据具体问题选择最合适的设计模式。该书还包含了大量的示例代码和实际案例,帮助读者更好地理解和应用设计模式。 总结来说,设计模式是一种解决面向对象软件开发中常见问题的方法,具有可复用性。《设计模式复用面向对象软件基础》这本书通过系统地介绍设计模式的原理、分类和实现,在提高开发效率的同时,帮助读者建立起良好的面向对象软件开发思维方式。 ### 回答2: 设计模式是一种解决软件设计问题的经典方法,它提供了一些通用的解决方案和思想,可用于构建复用面向对象软件设计模式的目标是提高软件的可维护性、可扩展性和灵活性。 设计模式包括三种类型:创建型、结构型和行为型。创建型设计模式关注如何实例化对象,包括简单工厂、工厂方法、抽象工厂、建造者和原型。结构型设计模式关注对象之间的组合,包括适配器、装饰器、代理、组合、外观、享元和桥接。行为型设计模式关注对象之间的通信和职责分配,包括观察者、模板方法、策略、状态、责任链、命令、备忘录、迭代器和访问者。 设计模式可提供可复用的解决方案,不仅可以提高软件的开发效率,还能确保软件的可靠性和可维护性。通过使用设计模式,开发人员可以更加清晰地理解软件系统的结构和功能,使得软件系统更易于理解和维护。同时,设计模式还能促进团队之间的协作和交流,提高团队的开发效率。 《设计模式复用面向对象软件基础》这本书提供了系统和详细的介绍和讲解了各种设计模式的原理、实现方法以及应用场景。通过阅读这本书,读者可以深入理解设计模式的核心概念,学习如何在实际项目中应用设计模式,提高软件的质量和可维护性。这本书对于想要深入学习和应用设计模式软件开发人员来说是一本非常有价值的参考资料。 ### 回答3: 设计模式指的是用于解决软件设计中常见问题的经验性解决方案。它们是软件开发人员在解决类似问题时所提炼出来的最佳实践。设计模式的目标是提高软件的可复用性、可扩展性和可维护性。 设计模式是通过将常见的设计问题和对应的解决方案进行抽象和总结而得到的。它们是由经验丰富的软件开发人员们共同提炼和归纳出来的,是他们在实际项目中不断探索和总结出来的经验。 设计模式是可复用的,因为它们提供了一种标准化的解决方案,可以在不同的项目中重复使用。这样可以减少开发人员的工作量,提高开发效率。 同时,设计模式也能够提升软件的可扩展性,使得软件在面对变化时更加容易进行修改和扩展。通过使用设计模式软件的各个组件之间的耦合性得到了降低,使得系统更加灵活和易于维护。 最后,设计模式使得软件更易于维护。因为设计模式遵循了一系列约定和规范,开发人员能够更快地理解和修改代码,从而降低了维护成本。 设计模式复用面向对象软件基础,是因为它们提供了一套可复用的解决方案,能够解决软件设计中常见的问题。通过学习和应用设计模式,可以提高软件的质量和开发效率,同时也可以提升开发人员的设计能力和职业素养。在软件开发领域中,设计模式是不可或缺的一部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值