前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

备考高级系统分析师-系统设计-系统设计-设计模式

qiguaw 2024-10-21 08:02:17 资源文章 20 ℃ 0 评论

紧接上一章,本章是将系统设计跟设计模式,系统设计对应系统分析的结构化跟面向对象,也分为结构化设计和面向对象的设计,然后就是设计模式,23种设计模式,真的是开发人员必备,对如何把代码写的很优雅,易扩展,非常有帮助,感兴趣的小伙伴可以,私下在去研究下23种设计模式,这里应付考试的话,可以不用深究,理解意思即可。

1.系统设计

系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。

系统设计方法结构化设计方法,面向对象设计方法。

系统设计的主要内容概要设计、详细设计

概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。

详细设计的基本任务模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。

注意:概要设计,描述模块跟模块之间的设计,详细设计,模块内的详细设计。

系统设计基本原理

抽象化;

自顶而下,逐步求精;

信息隐蔽;

模块独立(高内聚,低耦合)。

系统设计原则

保持模块的大小适中;

尽可能减少调用的深度;

多扇入,少扇出;

单入口,单出口;

模块的作用域应该在模块之内;

功能应该是可预测的。

注意:理解下扇入扇出,别的系统或者模块调用自己,叫做扇入,自己调用别的模块或系统,叫做扇出

真题来喽:

1.系统设计是根据系统分析的结果,完成系统的构建过程。系统设计的主要内容包括();系统总体结构设计的主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的()。

A.概要设计和详细设计 B.架构设计和对象设计 C.部署设计和用例设计 D.功能设计和模块设计

A.用例图 B.模块结构图 C.系统部署图 D.类图

2.以下关于软件系统模块结构设计的叙述中,正确的是()。

A.当模块扇出过大时,应把下级模块进一步分解为若干个子模块

B.当模块扇出过小时,应适当增加中间的控制模块

C.模块的扇入大,表示模块的复杂度较高

D.模块的扇入大,表示模块的复用程度高

解析:1.A B模块与模块之间也叫概要设计,2.D考设计原则的!

面向对象的设计

面向对象设计基本过程:

面向对象的设计原则

单一职责原则:设计目的单一的类。

开放-封闭原则:对扩展开放,对修改封闭。

李氏(Liskov)替换原则:子类可以替换父类。

依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。

接口隔离原则:使用多个专门的接口比使用单一的总接口要好。

组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。

迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。

注意:都需要记住的,考试会考,注意区别前边结构化设计原则。

2.设计模式

架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策。

设计模式:每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。

设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的的设计和体系结构。

四个基本要素:模式名称问题(应该在何时使用模式)解决方案(设计的内容)效果(模式应用的效果)

惯用法:是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法。

分为三种类型,分别是创建型模式结构型模式行为型模式

注意:考试出题类型就3点

1.问属于哪一种设计模式,目前有三类,创建型模式,结构性模式,行为型模式,比如问构建器模式属于哪一种模式?

2.应用场景,会给定义跟场景,问应用哪种设计模式。

3.考设计模式的图形,问此图属于什么设计模式?因为设计模式的很多图类似,所有考的话,不太好出题,一般题目中都有提示!要不是概念,要不就有英文提示!每个模式的英文要记忆。

2.1创建型模式

  • 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。记忆关键词:唯一实例
  • 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。记忆关键词:原型实例,拷贝
  • 工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。记忆关键词:子类决定实例化
  • 抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。记忆关键词:抽象接口
  • 建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。记忆关键词:类和构造分离

2.2结构型设计模式

  • 代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。记忆关键词:代理控制
  • 适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。记忆关键词:转换,兼容接口
  • 桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的,从而降低了抽象和实现这两个可变维度的耦合度。记忆关键词:抽象和实现分离
  • 装饰(Decorator)模式:动态地给对象增加一些职责,即增加其额外的功能。记忆关键词:附加职责
  • 外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。记忆关键词:对外统一接口
  • 享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。记忆关键词:细粒度,共享
  • 组合(Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。记忆关键词:整体-部分,树形结构

2.3行为型设计模式

  • 模板方法(Template Method)模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
  • 策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。记忆关键词:算法替换
  • 命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。记忆关键词:日志记录,可撤销
  • 职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。记忆关键词:传递请求,职责链接
  • 状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。记忆关键词:状态变成类
  • 观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。记忆关键词:通知,自动更新
  • 中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。记忆关键词:不直接引用
  • 迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。记忆关键词:顺序访问,不暴露内部
  • 访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。记忆关键词:数据和操作分离
  • 备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。记忆关键词:保存,恢复
  • 解释器(Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。记忆关键词:解释器,虚拟机

真题来喽:

1.某网站系统在用户登录时使用数字校验码。为了增强安全性,现在要求在登录校验码中增加字母或图片。如果直接修改原有的生成登录校验码的程序代码,则违反了面向对象设计原则中的()。

A.开闭原则 B.里氏替换原则 C.最少知识原则 D.组合复用原则

2.关于设计模式,下列说法正确的是()。

A.原型(Prototype)和模板方法(Template Method)属于创建型模式

B.组合(Composite)和代理(Proxy)属于结构型模式

C.桥接(Bridge)和状态(State)属于行为型模式

D.外观(Facade)和中介(Mediator)属于创建型模式

解析:1.A对修改关闭,对扩展开放 2.B,纯概念

3.对于如下所示的序列图所描述的场景,最适合于采用的设计模式是();该模式适用的场合是()。

A.Visitor B.Strategy C.Observer D.State

A.对象的行为决定于它的状态,且必须在运行时刻根据状态改变它的行为

B.定义对象结构的类很少改变,但经常需要在此结构上定义新的操作

C.需要使用一个算法的不同变体

D.一个对象必须通知其它对象,而它又不能假定其它对象是谁

解析:A有个英文提示Visitor B访问者模式的定义

4.采用以下设计思路实现下图所示的目录浏览器:目录中的每个目录项被认定为一个类,其属性包括名称、类型(目录或文件)、大小、扩展名、国标等。为节省内存空间,要求不能将具有相同属性(例如类型、扩展名、图标相同)的相同文件看作不同的对象。能够满足这一要求的设计模式是()。

A.Flyweight B.Proxy C.Command D State

解析:题目有提示:节省内存空间,不能看作不同的对象,A

3.人机界面设计

人机设计的三大黄金法则:

置于用户控制之下,减少用户记忆负担,保持界面一致性

置于用户控制之下:

  • 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
  • 提供灵活的交互
  • 允许用户交互可以被中断和撤消
  • 当技能级别增加时可以使交互流水化并允许定制交互
  • 使用户隔离内部技术细节
  • 设计应允许用户和出现在屏幕上的对象直接交互

减少用户记忆负担:

  • 减少对短期记忆的要求
  • 建立有意义的缺省
  • 定义直觉性的捷径
  • 界面的视觉布局应该基于真实世界的隐喻
  • 以不断进展的方式松示信息

保持界面一致性:

  • 允许用户将当前任务放入有意义的语境
  • 在应用系列内保持一致性
  • 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它

真题来喽:

1.“置于用户控制之下”是用户界面设计的“黄金三原则”之一。下列叙述中,不满足该原则的情形是()。

A.不能中断或撤销正在进行的人机交互操作

B.不强迫用户采用不情愿的方式来进行操作

C.用户可以定制交互方式

D.用户可以和出现在屏幕上的对象直接进行交互

解析:A

感谢大伙点赞+关注的支持,是我持续学习更新的动力,关注公众号:Coding-9527,跟大伙一起学习,成长,进步!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表