第七次作业

设计模式总结


  设计模式的六大原则

单一职责原则(SRP):引起类变化的原因不能多于一个。也就是说每一个类只负责自己的事情,此所谓单一职责。

里氏替换原则(LSP)只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。

依赖倒置原则(DIP):高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。

接口隔离原则(ISP):建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

迪米特法则(LoD):一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少。

开闭原则(OCP):一个软件如类,模块和函数应该对扩展开放,对修改关闭。

 

 

五种创建型模式

工厂模式:

    工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

 

抽象工厂模式:

    抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。

 

单例模式:

    单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

 

建造者模式:

    将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

 

原型模式:

    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

 

视图

用例视图:

展现了一组用例、参与者(actor)以及它们之间的关系。用例图从用户角度描述系统的静态使用情况,用于建立需求模型。

静态视图:

静态包括类图,包图对象图:

类图(Class Diagram)

展现了一组对象、接口、协作和它们之间的关系。类图描述的是一种静态关系,在系统的整个生命周期都是有效的,是面向对象系统的建模中最常见的图。

包图(Package Diagram)

包图描述系统的分层结构。在UML1.1版本中,包图不再看作一种独立的模型图。

对象图(Object Diagram)

展现了一组对象以及它们之间的关系。对象图是类图的实例,几乎使用与类图完全相同的标示。

交互视图:

交互视图描述了实现系统行为角色之间的消息交换序列。分类角色是对交互中充当特殊角色的对象的描述 从而使该对象区别于相同类的对象。视图提供了系统中行为全局的描述,它显示了多个对象间的控制流程。交互视图用侧重点不同的两种图来显示:顺序图协作图

顺序图:

顺序图表示了随时间安排的一系列消息,每个分类角色显示为一条生命线,消息则显示为生命线之间的箭头。

顺序图可以表达场景,即一项事务的特定历史顺序图的一个用途是显示用例的行为序列。

协作图:

协作对交互中存在意义的对象和链建模,分类角色描述了对象 关联角色描述了协作中的链,协作图通过图形的几何排布显示交互中的角色。

协作图的一个用途是表现操作的实现,协作显示了操作的参数和局部变量,以及更永久性的关联,当行为被实现时消息的顺序与程序的嵌套调用结构和信号传递一致。

状态机视图:

状态机对类的对象的可能生命历史建模。状态机包含由迁移连接的状态,每个状态对对象生命期中的一段时间建模,该时间内对象满足一定的条件,当事件发生时,它可能导致迁移的激发使对象改变至新状态,当迁移激发时附属于迁移的动作可能被执行,状态机显示为状态图。

活动视图:

活动视图是用于显示执行某个计算过程中的运算活动的状态机的一种变形,活动状态表现了一项活动,工作流的步骤或操作的执行。活动图描述了顺序和并发活动分组,活动视图表达为活动图。

物理视图:

物理视图指反映当前系统的组织机构、输入输出、资源利用情况和日常数据处理过程的模型,这一模型应客观地反映现实世界的实际情况; 逻辑视图指在物理模型的基础上进行分析,区分出本质的和非本质的因素,去掉那些非本质的因素,特别是非本质的物理因素,从而形成反映系统本质的模型。

模型管理视图:

模型管理视图对模型本身的组织建模,模型由一系列包含模型元素,如类,状态机,用例的包构成,包可以包含其它包,因此 模型指派了一个根包,间接包含了模型的所有内容包是操纵包内容以及访问控制和配置控制的单元每个模型元素被包或其它元素所拥有。

 

十一种行为模式

责任链模式(Chain Of Resposibility):

将能够处理同一类的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。

迭代器模式(iterator):

提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。

中介者模式(mediator):

是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。

命令模式(command):

将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作.也称之为:动作Action模式,事务transaction模式。

解析器模式(Interpreter):

提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

访问者模式(visitor):

表示一个作用于某对象结构中的各个元素的操作,它使我们可以在不改变元素的类的前提下定义作用于这些元素的新操作。

策略模式(strategy):

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

模板方法模式(template method):

一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

状态模式(state):

类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

观察者模式(observer):

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。

备忘录模式(memento):

保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

 

posted @ 2021-03-05 15:36  计应192西三组  阅读(75)  评论(0)    收藏  举报