孤尽T31项目Day1

孤尽T31项目class1

1 架构设计

1.1 T31项目简介

12306购票网站

1.2 需求分析

理解和挖掘用户的诉求、以及背后的逻辑,转化成可行性的分析结果。
边界
用户故事
用户路径
分析背后的人性:人性是提出需求的本源
需求落地路径:需求分析->可行性->设计->编码->测试->发布

1.2.1 T31的需求

孤尽T31项目Day1

1.3 KISS原则&DRY原则

1.3.1 KISS原则

Keep it Simple and Smile
Simple:大道至简,可拓展性、可维护性
Smile:协调能力

1.3.2 DRY原则

Don’t Repeat yourself

1.4 七大设计原则

①单一职责:

最简单的,但是却是最难的!
高内聚、低耦合的延伸
属性和行为向着模块预先定义的功能内聚
模块的名字非常重要

②里氏代换原则:

父类能够出现的地方,子类一定能够出现。

③接口隔离原则:

接口的粒度尽可能地小同一接口的方法强内聚于同一特征

④组合复用原则:

继承:绑定关系,相当于父子关系
——继承产生的对象,继承路线上的方法全部暴露出来;增加用户的选择成本,容易误用
组合:松散的合作关系,相当于谈恋爱
——组合产生的对象,方法暴露的少

⑤依赖倒置原则:

细节依赖抽象,底层依赖于高层

⑥迪米特原则(知识最少原则):

互相了解的信息,尽可能的少,你使用一个接口,你只关注:输入和输出

只与你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers):
如果两个软件实体无须直接通信,那么久不应当发生直接的相互调用。可以通过第三方转发该调用。
目的是降低类之间的耦合度,提高模块的相对独立性。

⑦开闭原则:

对扩展开放,对修改关闭
通过依赖倒置,实现增加类,或模块的方式,实现需求的变化
任何变化的点,都是需要被隔离出来的
开闭原则是熵减

2 架构图

架构 = 组成 + 结构
组成 = 模块结构 + 模块关系
决策 = 约束 + 设计原则 + 演化方向

架构:
水平层面上的业务模块加上垂直层面上的技术模块相互依赖形成的逻辑结构图

架构的目的:
1 系统边界,及在技术层面上做与不做
2 各模块之间的依赖关系与模块的宏观输入与输出
3 后续的演化方向
4 明确非功能性需求,非功能性需求是指安全性、可用性、可扩展性等

2.1 如何画架构图

第一,搞清楚要画的架构图的类型
第二,确认架构图中的关键要素(比如产品、技术、服务)
第三,梳理关键要素之间的关联:包含、支撑、同级并列等
第四,输出关联关系清晰的架构图

架构图的好坏:布局、颜色、逻辑
架构图样例:
孤尽T31项目Day1
架构图:业务架构、应用架构、数据架构、技术架构

2.2 传统架构图

物理视图:和部署相关的架构决策(一般不画)
逻辑视图:设计满足功能需求的架构(逻辑结构图)
开发视图:设计满足开发期质量属性的架构(UML图)
处理视图:设计满足运行期质量属性的架构(UML图)
场景视图:需求分析技术,通常采用UML的用例图进行设计

2.3 UML(Unified Model Language)

UML的分类:
静态结构图:类图、对象图、包图、组件图、部署图
动态行为图:交互图(时序图与协作图)、状态图、活动图

2.3.1 类图

类的六大关系:
泛化关系:即继承关系
实现关系:实现接口
依赖关系:只要在类中用到了对方,就存在依赖关系
关联关系: 体现的是业务逻辑的关系,是依赖关系的特例,具有导航性&多重性
聚合关系:业务上整体与部分可以分开,是关联关系的特例(电脑和键盘)
组合关系:业务上整体与部分不可以分开,同样是是关联关系的特例(公司和部门)

1、单向关联
A1->A2: 表示A1认识A2,A1知道A2的存在,A1可以调用A2中的方法和属性
场景:订单和商品,订单中包括商品,但是商品并不了解订单的存在。
2、双向关联
B1-B2: 表示B1认识B2,B1知道B2的存在,B1可以调用B2中的方法和属性;同样B2也知道B1的存在,B2也可以调用B1的方法和属性。
场景:订单和客户,订单属于客户,客户拥有一些特定的订单。

可见性有:
公有(public):公有的属性和方法(“+”)能够被系统中其它任何类的方法查看和使用;
私有(private):私有属性和方法(“-”)则仅在该类的内部可见,而且只有该类的方法才可以使用;
受保护(protected):受保护属性和方法(“#”)则不仅可以被该类内部的方法使用,也可以被该类的子类使用,但不能被其他类的方法使用

样例:
孤尽T31项目Day1

2.3.2 用例图

包含关系(include)
扩展关系(extend)

2.3.3 时序图

UML时序图(Sequence Diagram)
时序图的元素: 角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)【同步消息(Synchronous Message)、异步消息(Asynchronous Message)】、自关联消息、组合片段

样例:
孤尽T31项目Day1

2.3.3 活动图

活动图的主要组成元素包括动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等
孤尽T31项目Day1

3 23种常见的设计模型

23种常见的设计模型
一、创建型
单例(Singleton)
工厂模式
简单工厂(Simple Factory)
工厂方法(Factory Method)
抽象工厂(Abstract Factory)
生成器(Builder)
原型模式(Prototype)
二、行为型
责任链(Chain Of Responsibility)
命令(Command)
解释器(Interpreter)
迭代器(Iterator)
中介者(Mediator)
备忘录(Memento)
观察者(Observer)
状态(State)
策略(Strategy)
模板方法(Template Method)
访问者(Visitor)
空对象(Null)
三、结构型
适配器(Adapter)
装饰器(Decorator)
代理模式(Proxy)
外观模式/门面模式(Facade)
桥接模式(Bridge Pattern)
组合模式(Composite)
享元模式(Flyweight)

上一篇:day1


下一篇:DRF学习day1随堂笔记