zoukankan      html  css  js  c++  java
  • UML笔记(七)

    设计模式与UML

    如何成为象棋高手?

    第一步:学习基础象棋知识

           棋盘布局,棋子名称等等。

    第二步:学习简单规则

           攻击力度、走棋规则等。

    然而,学习象棋还需要研究已有的棋局

           这些棋局包含一些模式,需要理解、记忆并运用这些模式。

    有成百种这样的经典棋局供学习

    如何成为一个软件开发工程师?

    第一步:学习规则

           学习算法、数据结构、程序设计语言等等。

    第二步:学习原理

           学习结构化编程、模块化编程、面向对象编程等。

    然而,为了成为一个软件设计高手,你还需要学习一些经典的软件设计模式,理解、记忆并在实际项目中反复运用它们。

    有大量的软件设计模式供学习。

    什么是模式?

    每个模式描述了一个问题,该问题反复在我们的周围出现,每个模式给出了对该问题的核心解决方法,因此,人们可以反复使用给解决方法解决类似问题。

    为什么学习模式?

    模式帮助你学习他们成功的经验,从而避免失误。

    模式和框架的比较

    ·模式(Patterns)支持软件结构和实际的重用

           1、抓住了特定领域中为题的成功解决方案中的静态、动态结构和相互之间的协作关系

           2Patterns与开发语言无关,但是建立在一定的环境基础上

           3、例如:经典的MVCFactory Method

    ·框架(Frameworks)支持细节设计和代码的重用

           Framework是一组组件的综合,这些组件相互协作,为一族相互应用提供了一个可重用的框架结构

    ·两者结合起来,设计模式和框架有助于提高软件的质量

    比如:重用性,扩展性,性能,可维护性

    ·框架的Hollywood Principle

           Don’t call uswe’ll call you。)

    ·模式和框架的比较:

           设计模式比框架更抽象

           和框架相比,设计模式是更小单元的架构元素

           从使用的广度来说,设计模式比框架更广,它与应用的相关性更小。

    关于“Design Pattern

    ·对已有模式的整理、分类

    ·一套描述模式的词汇,可用于交流和文档化

    ·为软件设计总结了宝贵的经验,这些设计经验可以被重用,但不是简单的代码重用。

    ·分类:

           Creational Patterns

           Structural Patterns

           Behavioral Patterns

    ·在软件设计模式领域,起到先驱的作用

    重提:指导模式设计的三个概念

    ·重用(reuse ):是目标

           两种重要的重用手段

                  Inheritance&composition

    ·接口与实现分离

           接口保持不变,分离带来灵活性

           多态性(polymorphism

    ·Decouple

           降低复杂性

    如何描述一个模式

    ·关键要素

           模式名称

           问题、动机

           约束

           上下文

           解决方案(结构Structure、参与者Participants、协作Collaboration、实现Implementation

           评测

           相关模式

    25

    创建型模式(Creational Patters

    ·Factory Method

           本质:用一个virtual Method 完成创建过程。

    ·Abstract Factory

           一个product族的Factory Method构成了一个Factory接口

    ·Prototype

           通过Product原型来构造ProductClone+prototype manager

    ·Builder

           通过一个构造算法和builder接口把构造过程与客户端离开

    ·Singleton

           单实例类型,如何构造这单个实例?如何访问这单个实例?

    ·Finder

           把对象的获取过程与客户隔离开

    ·Singleton模式为提供对象的单一入口提供了帮助。

    ·AbstractFactoryFactoryMethod模式在功能上比较类似,都是用来处理对象的创建的,但应用在不同的层面上。

    ·Builder模式用来处理对象创建的细节,在两个工厂模式中都没有涉及到对象创建的具体细节,都是通过接口来返回一个给定类型的对象。而Builder模式则需要对创建一个给定类型对象的过程进行建模。这对创建复杂对象时很有用,使得创建的算法独立于对象各个组成部分的创建。

    ·Prototype模式使用原型机制,通过创建简单原型的拷贝来创建对象。

    ·AdapterBridgefaçade

           Adapter用于两个不兼容接口之间的转接

           Bridge用于讲一个抽象与多个可能的实现连接起来

           Façade用于为复杂的子系统定义一个新的简单易用的接口

    ·compositedecoratorproxy

           Composite用于构造对象组合结构

           Decorator用于为对象增加新的职责

           Proxy为目标对象提供一个替代者

    ·flyweight

           针对细粒度对象的一种全局控制手段

    行为型模式(Behavioral Patterns

    ·Command

           用对象封装命令,使得命令可以被传递、记录、排队等。

    ·Iterator

           把对聚合体对象的访问封装起来

    ·Observer

           建立起一对多的通信模型,特别适合于更新通知和事件模型

    ·Strategy

           把一个对象或者类的某些行为封装到另一个单独的对象中

    ·Visitor

           把对一个结构模型型的操作单独组织到一个类中

    ·Chain of Responsibility

           请求的处理过程,沿着链传递,decouple发送方和接收方

    ·Interpreter

           在类层次结构中,在特定环境的interpret过程

    ·Mediator

           用一个mediatordecouple个同等单元

    ·Memento

           在对象之外保存对象的内部状态

    ·State

           把一个对象的状态独立出来,动态可变换状态对象的类型

    ·Template Method

           在基类中定义算法的骨架,把某些细节延迟到子类中

    ·StrategyIteratorMediatorStatecommand

           用一个对象来封装某些特性,比如变化、交互、状态、行为、命令

    ·Mediator Observer

           Observer建立起subjectObserver之间的松耦合连接

           Mediator把约束限制集中起来——中心控制

    ·commandChain of responsibilityinterpreter

           Command模式侧重于命令的总体管理

           Chain of Responsibility侧重于命令被正确处理

           Interpreter用于复合结构中操作的执行过程

    举例

    命令模式 The Command Pattern

    Client:创建一个Concrete command对象,调用者并确定其接受者。

    Command:生命一个给所有具体命令类的接口。

    Comcerecommand:定义一个接受者和行为之间的弱耦合,实现execute() 方法,该方法调用接受者相应的操作。

    Invoker:伏在调用命令对象执行请求。

    Recelver:具体实施一个请求。

    适配器模式 The Adapter Pattern

    ·现实世界中充满适配器!

    ·面向对象适配器

     

     

  • 相关阅读:
    文本框的正则表达式验证
    八皇后问题 回溯法
    Repeater中使用倒计时
    c#导入excel 绑定数据 repeat为例子
    "table" is not mapped 解决方法
    NHibernate的常见问题及解决方案
    Nginx日志切割,跨域配置,防盗链配置
    springboot跨域配置
    图片上传,文件url地址添加时间戳,防止浏览器缓存的情况
    使用Hibernate数据验证
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9664028.html
Copyright © 2011-2022 走看看