zoukankan      html  css  js  c++  java
  • 设计模式怎样解决设计问题

    1. 寻找合适的对象

          面向对象的程序设计由对象组成,对象Object包括数据和对数据进行操作的过程,这些个过程也常常称为方法Method。对象在收到客户的请求(或消息)后,执行相应的动作。 客户请求是使得对象执行操作的唯一途径,方法又是改变内部数据的唯一途径。由于这些限制,对象的内部状态是被封装的,对于外部对象是不可见的。面向对象设计最困难的部分是将系统分解成对象集合。因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。 你可以写出一个问题的描述,挑出名词和动词,进而创建相应的类和方法;或者关注系统的协作和职责关系;还可以对现实世界建模,再将分析时发现的对象转化至设计中。设计模式帮你确定并不明显的抽象和描述这些抽象的对象。例如,描述算法的对象在现实中并不存在,但他们却是设计的关键部分。Strategy模式描述了怎样实现可互换的算法族。State模式将实体的每一个状态描述为一个对象。这些对象在分析阶段,甚至在设计阶段的早期并不存在,后来为了设计的灵活性,复用性才将它们发掘出来。

    2. 决定对象的粒度

      对象在大小和数目上变化极大。它们能表示下自硬件或上自整个应用的任何事物。那么怎样决定一个对象应该是什么呢?设计模式很好地讲述了这个问题。Facade模式描述了怎样用对象表示完整的子系统,Flyweight模式描述了如何支持大量的最小粒度的对象。其他一些设计模式描述了将一个对象分解成许多小对象的特定方法。Abstract Factory和Builder模式产生那些负责生成其他对象的对象。Visitor和command模式生成的对象专门负责实现对其他对象或对象组的请求。

    3. 指定对象接口

      对象声明的每个操作指定操作名、作为参数的对象和返回值,这就是操作的型构Signature。所有方法的集合构成了该类或对象的接口。类型是用来标识特定接口的一个名字。如果一个对象接受“Window”接口定义的所有操作请求,那么可以说该对象具有“Window”类型。一个对象可以有许多类型,并且不同的对象可以共享同一个类型。接口可以包含其他接口作为子集。当一个类型的接口包含另一个类型的接口时,我们可以说它是另一个类型的子类型SubType,另一个类型称之为它的超类型superType。我们常说子类型继承了它的超类型接口。在面向对象系统中,接口是基本的组成部分。对象只有通过他们的接口才能与外部交流,如果不通过对象的接口就无法知道对象的任何事情,也无法请求对象做任何事情。对象接口与其功能实现是分离的,不同对象可以对请求做不同的实现,也就是说,两个有相同接口的对象可以有完全不同的实现。

    4. 描述对象的实现
    5. 运用复用机制
    6. 关联运行时刻和编译时刻的结构
    7. 设计应该支持变化
  • 相关阅读:
    redis
    dom4j-1.6.1.jar与dom4j-1.4.jar
    runoob
    session失效后,登录页面嵌入iframe框架
    log4j.properties 详解与配置步骤
    maven+swagger
    Eclipse建立Maven项目后无法建立src/main/java资源文件夹
    vue 3.x 相对于 vue 2.x 的重大修改
    面试准备
    JS系列
  • 原文地址:https://www.cnblogs.com/xyzrobot/p/7634076.html
Copyright © 2011-2022 走看看