软件体系结构与设计模式
WhereIsTom
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
观察者模式
观察者模式:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。包含的角色:抽象被观察者角色:是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。具体被观察者角色:也就是一个具体的主题,...原创 2020-04-23 14:08:56 · 179 阅读 · 0 评论 -
中介者模式
中介者模式又称为调停者模式,具体就是定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。抽象中介者(mediator)定义一个接口用于和对象通信(SmartDevice)具体中介者(concretemediator)实现上述接口抽象同事角色(colleague)规定了同事的基本类型具体同事角色(conc...原创 2020-04-22 20:43:47 · 174 阅读 · 0 评论 -
设计模式的迭代器模式精简分享
迭代器模式:让用户通过特定的接口访问容器的数据,不需要了解容器内部的数据结构。迭代器模式的角色构成(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),(2)具体迭代器角色(Concrete Iterator):实现迭代器接口中定义的方法,完成...原创 2020-04-22 18:48:50 · 159 阅读 · 0 评论 -
命令模式
将命令作为一个类来保存,当要使用的时候可以直接拿来使用。将操作的步骤保存下来,本例之中我们使用java自带的GUI来画图,然后将画图的过程(在哪个地方画了什么东西)保存下来,可以把每一次我们的操作作为一个命令,其实就是<使用什么画布,画点的坐标>,将这个命令对应的对象保存到所有命令对象的集合之中去,这样命令集合就记录下来了每一个命令,如果要显示画的内容的时候,直接将这些命令组合读取出来...原创 2020-04-19 17:04:41 · 159 阅读 · 0 评论 -
职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。...原创 2020-04-12 23:15:42 · 223 阅读 · 0 评论 -
2句话+1幅图读懂设计模式之外观模式(门面模式)
外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式为子系统中的一组接口提供一个一致的界面原创 2020-04-06 15:33:54 · 161 阅读 · 0 评论 -
享元模式精简介绍
在享元模式中包含以下角色:Flyweight(抽象享元类):在抽象享元类中声明了具体享元类公共的方法,这些方法可以向外界提供享元对象的内部数据(内部状态),同时也可以通过这些方法来设置外部数据(外部状态)。ConcreteFlyweight(具体享元类):它实现了抽象享元类。在具体享元类中为内部状态提供了存储空间。UnsharedConcreteFlyweight(非共享具体享元类):并不是...原创 2020-04-06 15:24:05 · 233 阅读 · 0 评论 -
代理模式
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用按照代理创建的时期可分为静态代理和动态代理。静态代理是由程序员创建或特定工具自动生成源代码,在对其编译。动态代理是在程序运行时通过反射机制动态创建的。静态代理模式一般会有三个角色:抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色...原创 2020-04-06 14:37:54 · 157 阅读 · 0 评论 -
装饰模式(精简介绍)
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式中的4个角色有:(1)抽象构件(Component)类:给出一个抽象接口,以规范准备接收附加责任的对象。(2)具体构件(Concrete Component)类:定义一个将要接收附加责任的类。(3)抽象装饰(Decorator)类:持有一个构件(Com...原创 2020-04-05 19:40:06 · 203 阅读 · 0 评论 -
组合模式
组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因组合模式包含以下主要角色。抽象构件角色:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。树叶构件角色:是组合中的叶节点对象,它没有子节点,用于实现抽象构件角色中声明的公共接口。树枝构件角色:是组合中的分支节点对象,它有子节点。它实现了抽象构件角...原创 2020-04-04 22:18:42 · 207 阅读 · 0 评论 -
结构型模式(含适配器模式,桥接模式)
结构型模式是为了将类或者对象结合到一起形成更大的结构按照构成可以分为类结构型模式(关心类的组合,一般都有继承或者实现关系)和对象结构型模式(关心类和对象的组合。典型的就是在一个类中实例化另一个类的对象然后调用其方法)。重点说两个重要的模式:适配器模式:让不兼容的接口或者类(当然接口是特殊的类,但是这里的接口和程序语言有所差异。这里的接口是广义的接口。表示方法的集合)可以一起工作适配器模式的...原创 2020-03-14 16:17:29 · 279 阅读 · 0 评论 -
单列模式
单列模式:确保一个类只有一个实列,并且提供一个全局访问点来访问这个实列。注意:必须自行创建这个实列并要向系统提供这个实列单列类的构造方法为私有提供私有静态成员变量提供共有静态工厂方法...原创 2020-03-12 20:37:27 · 219 阅读 · 0 评论 -
原型模式
原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象包含以下几个角色:Prototype(抽象原型类):所有具体原型类的公共父类,它可是抽象类也可以是接口,甚至可以是具体实现类(不建议这么做,具体实现类失去了原型本身的意义)。ConcretePrototype(具体原型类):它实现抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。Client(客户端...原创 2020-03-12 20:20:03 · 129 阅读 · 0 评论 -
建造者模式
建造者模式(又称创造者模式)隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。主要角色:builder(抽象建造者):给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。Co...原创 2020-03-12 16:51:14 · 176 阅读 · 0 评论 -
简单工厂、工厂方法、抽象工厂的区别
简单工厂有一个抽象产品类,多个具体产品类,没有抽象工厂类,一个静态的具体工厂,一个静态工厂创建多个具体产品实例工厂方法有一个抽象产品类,多个具体产品类,一个抽象工厂类,多个具体工厂,一个静态工厂创建一个具体产品实例抽象工厂有多个抽象产品类,多个具体产品类,一个抽象工厂类,多个具体工厂,一个静态工厂创建一个产品族...原创 2020-03-04 20:09:41 · 180 阅读 · 0 评论 -
抽象工厂模式(工具模式)
工厂方法模式只有一个或者一组重载的工厂方法(一个工厂对应一个具体的产品,大大增加系统开销)抽象工厂模式:一个工厂生产一些系列产品。比如生产水果的工厂可以生产苹果,也可以生产梨产品族:在抽象工厂模式中,产品族是指同一个工厂生产的,位于不同产品等级结构中的一组产品抽象工厂模式包含的角色:抽象产品,具体产品,抽象工厂,具体工厂典型利用抽象工厂的就是对数据库的链接(SQL SERVER和MY SQ...原创 2020-03-02 11:34:50 · 247 阅读 · 0 评论 -
工厂方法模式
简单工厂模式一旦有新产品加入就要修改工厂类加入必要的处理逻辑,这违背了开闭原则工厂方法模式解决了简单工厂模式的这一问题工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生产具体的产品对象。目的:将产品类的实例化操作推迟到工厂子类完成工厂方法模式包含的角色:抽象产品,具体产品,抽象工厂,具体工厂(客户端无需知道具体产品名称)如果工厂方法模式仅仅只有一个具体工厂子类,就退化成了简单工厂...原创 2020-03-02 11:17:06 · 173 阅读 · 0 评论 -
简单工厂模式
简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的类一般都有相同的父类简单工厂模式又称为静态型工厂,属于类创建型模式简单工厂模式的优点:将对象的创建和对象本身业务处理分离简单工厂模式的要点:通过传递参数确定需要的对象,忽略创建细节简单工厂模式的缺点:不利于维护和扩展,违反了开闭原则...原创 2020-02-28 10:18:48 · 250 阅读 · 0 评论 -
软件模式与设计模式简介
软件生命周期的各个阶段都存在被认同的模式即软件模式,他包括:设计模式,体系结构模式,分析模式,过程模式目前研究最深入的是设计模式设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用大三定律:只有经过三个以上不同类型(不同领域也行)的系统的校验,一个解决方案才能从候选模式升为模式。设计模式的关键要素:模式名称,问题,解决方案,效果设...原创 2020-02-28 09:55:24 · 467 阅读 · 0 评论 -
面向对象设计原则
单一职责原则:类的职责尽可能单一,不同的职责尽可能放在不同类中开闭原则:软件实体对扩展开放,对修改关闭里氏代换原则:可以接受基类的地方必然可以接受子类依赖倒转原则:针对抽象层编程,不针对具体类编程接口隔离原则:用多个专门的接口取代一个统一的接口合成复用原则:系统中尽可能使用组合和聚合关系,尽量不使用继承关系迪米特法则:一个实体对其他实体的引用越少越好。两个实体不直接彼此通信尽量通过第三...原创 2020-02-25 10:24:52 · 215 阅读 · 2 评论 -
类之间的关系
1.关联关系在UML图中,用实线连接有关联的对象所对应的类聚合关系表示一个整体与部分的关系,部分可以独立于整体存在(用空心的菱形直线表示)聚合关系也表示一个整体与部分的关系,部分与整体同生共死(用实心的菱形直线表示)2.依赖关系一个类与另外一个类存在使用关系(用带箭头的虚线表示)具体实现有三种方法:一个类作为另一个类的方法参数一个类作为另一个类的局部变量一个类调用另一个类的静态方...原创 2020-02-18 11:49:40 · 204 阅读 · 0 评论 -
StarUML中类图中各种图形元素及关系的绘制
通过“Model/Profile”菜单去设置工程所需的 profile。这决定了工程所使用的规则和约 定 。包含"java Porfile" 这 一 项 目。(编程语言太多了,根据自己需要,因为目前在校期间学习安卓开发所以用java和C++多一点。大家担待点)从“File ”菜单,选择“Save” ,并选择一个地方以保存工程。创造图表,从默认就在屏幕的左边的“Toolbox”选择“类”图标,...原创 2020-02-17 23:20:41 · 2666 阅读 · 0 评论
分享