
软件设计模式与体系结构学习
h-p_c-h
多思考
展开
-
创建型模式之抽象工厂模式
创建型模式的目的就是使对象的创建和使用分离在工厂方法模式中,一个工厂只能生产一种产品,比如在海尔工厂中只生产了海尔电视,但是海尔品牌还生产其他产品呀,比如海尔冰箱,海尔空调。诚然,也很容易想到,在工厂类中添加其他产品不就得了,所以,在工厂方法模式的工厂中不只是生产一种产品就叫做抽象工厂模式。先引入两个概念: 产品等级结构:产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有...原创 2018-09-16 17:05:12 · 189 阅读 · 0 评论 -
有点烦人的设计模式
设计模式也学了不少,刚开始还好,但是到最后越学越有点蒙,比如在学桥接模式的时候就感觉有点和建造者模式类似,又感觉和适配器模式更像,其实后来想想,也没必要过于纠结,设计模式本来就是人类总结出来的方便搞事情的,有些问题从不同的角度考虑也可能会有不同的设计方案,多用多实践,熟练后用起来自然就顺手了。...原创 2018-10-15 22:30:20 · 119 阅读 · 0 评论 -
桥接模式
模式动机:设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:• 第一种设计方案是为每一种形状都提供一套各种颜色的版本。• 第二种设计方案是根据实际需要对形状和颜色进行组合。设计方案二即是桥接模式的应用。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编量。它是...原创 2018-10-15 22:16:15 · 301 阅读 · 0 评论 -
命令模式
命令模式的动机:首先命令模式是行为型模式,这种模式注重对象之间的交互。具体到命令模式来说,它可实现命令的发送者和接收者之间的解耦。发送者和接收者没有直接的引用关系。听起来很抽象,举个栗子:电视机有打开电视和关闭电视的功能,而打开电视和关闭电视就可以作为遥控器的命令对电视机进行调控,遥控器是命令的发送者,电视机是命令的接受者,所以不考虑设计模式的话代码可能就会这样写:public class ...原创 2018-10-18 12:33:54 · 155 阅读 · 0 评论 -
组合模式
首先看一道题:在水果盘中有一些水果,大水果盘中不仅可以放水果而且可以放小一点的水果盘,水果有吃的方法,请模拟该场景吃水果。**分析:**我们可以不管是大水果盘还是小水果盘,还是水果,都给它看做一个组件,该组件可以定义为抽象类,并且定义基本的抽象的吃方法,添加组件(组件可以是水果也可以是盘子)的方法,然后让水果类和盘子类分别继承组件类,并根据需要重写一些方法。package zuhemosh...原创 2018-10-14 16:59:12 · 613 阅读 · 0 评论 -
适配器模式
1.思考:假如你有两根粗细不一样的水管,但你又想让它们一起通水工作,你该怎么办? 是不是可以通过一个两端大小分别和两根水管相匹配的中间连接物将两根水管连接起来而这个中间连接物就可以称作适配器。      同样,在软件设计中也有适配器,例如有一个类要实现两个功能,而这两个功能又分别在不同的类中,我们就可以把这两个类关联起来,而关联这两个...原创 2018-10-12 21:43:32 · 323 阅读 · 0 评论 -
结构型模式概述
结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式可以分为类结构型模式和对象结构型模式:• 类结构型模式关心类与类的组合(继承),由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。• 对象结构型模式关心类与对象的组合(聚合、组合),通过...原创 2018-10-11 21:23:47 · 312 阅读 · 0 评论 -
创建型模式概述
创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。原创 2018-10-11 21:18:07 · 162 阅读 · 0 评论 -
创建型模式之单例模式
1.对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。2.单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。3.单例模式的要点有三个:...原创 2018-09-20 22:15:53 · 139 阅读 · 0 评论 -
创建者模式之原型模式
1.在软件系统中,有些对象的创建过程较为复杂,而且有时候需要频繁创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的意图所在。2.在原型模式结构中定义了一个抽象原型类,所有的Java类都继承自java.lang.Object,而Object类提供一个 clone() 方法,可以将一个Java对象复制一份。因此在Java...原创 2018-09-20 21:56:26 · 150 阅读 · 0 评论 -
设计模式之建造者模式/生成器模式
生活中我们会常常遇到这样的情况,买一套房子可以有不同的设计与档次,制造同一品牌的电脑也有不同的配置,去吃肯德基也有不同的套餐。房子,电脑,肯德基都是具体的物体,但是却有不同种的配件组成,遇到这样的事物,我们常常需要使用建造者模式或者叫生成器模式。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节以肯德基...原创 2018-09-19 22:39:39 · 209 阅读 · 0 评论 -
创建型模式之工厂方法模式
创建型模式的目的就是使对象的创建和使用分离。 通过简单工厂方法模式的分析发现它依然存在着工厂类不符合设计原则的问题,于是就产生了工厂方法模式。它较之于简单工厂方法模式的区别是一个工厂不再生产多个产品,而是一个工厂生产一个产品。 public interface factory{ public abstract tv getTv();}class h...原创 2018-09-14 17:02:26 · 214 阅读 · 0 评论 -
设计模式概述
设计模式定义:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式分类:不同领域有不同的设计模式分类,在面向对象领域,如下:创建型模式 简单工厂方法模式工厂方法模式抽象工厂模式生成器模式单例模式结构型模式 组合模式适配器模式外...原创 2018-09-13 21:25:26 · 199 阅读 · 0 评论 -
创建型模式之简单工厂方法模式
创建型模式的目的就是使对象的创建和使用分离。假设要实电视的播放功能,你可以写一个电视的接口,让不同品牌的电视类具体实现该接口,在main()方法里根据不同情况实例化不同的品牌电视,再用实例去调用播放方法。 public class Watch{ public static void main(){ if(...)new haier().play; ...原创 2018-09-13 21:18:58 · 194 阅读 · 0 评论 -
观察者模式
什么是观察者模式?定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式是一种对象行为型模式。简单举例:问题: 假设猫是老鼠和狗的观察目标...原创 2018-10-28 16:15:12 · 267 阅读 · 0 评论