随笔分类 - 设计模式
1
摘要:面向对象设计原则 单一职责原则:提高复用性。高内聚,低耦合。 开闭原则:开放拓展,关闭修改。(灵活性,稳定性,抽象化) 里氏代换原则:父类可替换为子类,反之不成立。(抽象化,代码复用,扩展性) 依赖倒转原则:针对抽象层编程。(抽象化) 接口隔离原则:多个专门的接口取代统一接口,不依赖不需要的接口。
阅读全文
摘要:(1)案例背景: 某会议管理系统的“会议通知发送”模块说明如下: (1)行政管理人员可以给某个或者某些员工(Employee)发送会议通知,也可以给某个部门 (Department)发送通知,如果给某个部门发送通知,将逐个给该部门每个员工发送会议通知(2)如果员工或者部门希望能够收到会议通知,必须先
阅读全文
摘要:1. 媒体播放器的实现 (1)案例背景: Windows Media Player 和 RealPlayer 是两种常用的媒体播放器,它们的 API 结构和调用方法存在差别,现在你的应用程序需要支持这两种播放器 API,并且将来可能还需要支持新的媒体播放器,根据给出的类图,回答该应用程序使用了哪些设
阅读全文
摘要:策略模式的运用 (1)案例背景: 在介绍策略模式时,我们讲到了从不同角度出发,可以使用不同的出行策略的例子,教材中已经提供 了“旅游出行策略”的类图,用 Java 代码模拟实现“旅游出行策略”实例,要求使用配置文件存储具体策 略类的类名。在此基础上再增加一种新的旅游出行方式,如徒步旅行(WalkSt
阅读全文
摘要:观察者模式的运用 (1)案例背景: 某在线股票系统需要提供以下功能:当股票购买者所购买的某只股票价格变化幅度达到 5%时,系统 将自动发送通知(包括新价格)给购买该股票的股民。现使用观察者模式设计该系统,绘制类图并编程实 现 (2)实现步骤: Ø 根据题意,画出在线股票系统的类图,类图中应包括目标类
阅读全文
摘要:1. 迭代器模式的运用 (1)案例背景: 课堂教学中学习了如何使用迭代器模式来模拟电视遥控器的实现,并使用了内部类的方式来实现迭代 器。在实验中,请将迭代器从具体聚合类(电视机类)中分离出来,重新实现电视遥控器的模拟,请画出 类图并编程实现。 (2)实现步骤: Ø 参照教材中实例,画出电视机遥控器的
阅读全文
摘要:(1)案例背景: 在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘的(HardDisk)的读取(read())、操作系统(OS)的载入(load())等,
阅读全文
摘要:(1)案例背景: 在操作系统中,一个文件夹中可能存放着图像文件,视频文件,文本文件,也可能存放其他的文件夹,而对不同类型的文件进行的浏览操作也不一样,使用透明组合模式,绘制类图并编程实现文件的浏览(课本197页第二题)。 (2)实现步骤: 根据题意,画出组合模式的类图,类图中应包含抽象文件类Abst
阅读全文
摘要:(1)案例背景: 在课堂上我们学习了单向适配器的使用和实现,现在我们需要实现一个双向适配器,编写代码,使用Java语言实现双向适配器,使猫可以学狗叫,狗可以学猫抓老鼠,请绘制相应类图并实现。(课本167页第三题) (2)实现步骤: 根据题意,画出双向适配器的类图,类图中应该包含一个适配器类Adapt
阅读全文
摘要:(1)案例背景: 在实际的运用中,我们有时一个类不止需要产生一个对象,可能需要两个或者三个。在课上我们讲过,使用单例模式的思想可以实现多例模式,从而确保系统中某个类的对象只能存在有限个,请设计并实现代码,从而实现多例模式 (2)实现步骤: 由于本题的实现较为复杂,所以我们直接给出参考类图(见下一页)
阅读全文
摘要:(1)案例背景: 计算机包含内存(RAM),CPU等硬件设备 ,根据如图所示的“产品等级结构-产品族示意图”,使用抽象工厂模式实现计算机设备创建过程并绘制类图(课本105页第二题) (2)实现步骤: 根据题意,使用抽象工厂模式并画出类图,类图中应包含一个抽象工厂类AbstractFactory, P
阅读全文
摘要:一、实验目的和要求: 2.建造者模式的运用 (1)案例背景: 计算机组装工厂可以将CPU,内存,硬盘,主机,显示器等硬件设备组装在一起构成一台完整的计算机,且构成的计算机可以是笔记本电脑,也可以是台式机,还可以是不提供显示器的服务器主机。对于用户来言,无需关心计算机的组成设备和组装过程,工厂返回给用
阅读全文
摘要:一、实验目的和要求: 1. 抽象工厂模式的运用 (1)案例背景: 计算机包含内存(RAM),CPU等硬件设备 ,根据如图所示的“产品等级结构-产品族示意图”,使用抽象工厂模式实现计算机设备创建过程并绘制类图(课本105页第二题) (2)实现步骤: 根据题意,使用抽象工厂模式并画出类图,类图中应包含一
阅读全文
摘要:设计模式-原型模式实例-03-原型模式扩展 实例1:颜色原型管理器 代码实现: 代码结构: MyColor.java: //抽象原型类 public interface MyColor extends Cloneable{ public Object clone(); public void dis
阅读全文
摘要:设计模式-原型模式实例-深克隆 浅克隆与深克隆: 浅克隆: 当对象被复制时,只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量未被复制。(Object.clone()方法) 深克隆: 对象本身及其包含的所有成员变量也将被复制。 (序列化,通过序列化对象将对象写到一个流中,再从流中读出来。
阅读全文
摘要:设计模式-原型模式实例-浅克隆 浅克隆与深克隆: 浅克隆: 当对象被复制时,只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量未被复制。(Object.clone()方法) 深克隆: 对象本身及其包含的所有成员变量也将被复制。 (序列化,通过序列化对象将对象写到一个流中,再从流中读出来。
阅读全文
摘要:设计模式-建造者模式实例-01 要点: 创建一个复杂对象。 优点: 客户端不必知道产品内部组成细节,将产品本身和产品创建过程解耦,使相同创建过程可创建不同产品对象; 具体建造者相对独立,方便替换和增加,符合开闭原则; 可以更精细地控制产品创建过程。 缺点: 产品间差异性大的时候不适用; 内部变化复杂
阅读全文
摘要:设计模式-抽象工厂模式实例-01 要点: 需要一个工厂生产多个产品对象。 优点: 隔离了具体类的生成,使客户端不知道什么被创建; 保证客户端始终只使用一个产品族的对象; 增加新的产品族很方便,符合开闭原则。 缺点: 增加新的产品等级结构很复杂,不符合开闭原则。 适用环境: 一个系统不应当依赖于产品类
阅读全文
摘要:设计模式-工厂方法模式实例-01 工厂方法模式/虚拟构造器模式/多态工厂模式(类创建型模式) 要点: 符合开闭原则。 优点: 向客户隐藏了那种具体产品将被实例化; 能让工厂自主确定创建何种产品对象; 加入新产品时符合开闭原则。 缺点: 类的个数成对增加,在一定程度上增加了系统复杂度,带来额外开销;
阅读全文
摘要:设计模式-简单工厂模式实例-01 简单工厂模式/静态工厂方法(创建型设计模式) 要点: 只关注接口,不关注对象创建细节。 创建过程与使用过程相分离。 优点: 实现了对象的创建与使用的分离; 客户端只需要知道参数即可; 通过引入配置文件提高了系统灵活性。 缺点: 工厂类职责过重; 增加了系统中类的个数
阅读全文
1