设计模式
文章平均质量分 64
本栏通过大学老师授课、《设计模式》书籍、观看狂神设计模式视频、观看尚硅谷设计模式视频整理得出
lena7
这个作者很懒,什么都没留下…
展开
-
装饰模式
案例1某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook() 。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统,绘制类图并编程实现。类图如下:代码如下:public abstract class IBook { private String bookName; abstract void borrowBook(); abstract void returnBook(); p原创 2021-05-02 18:29:39 · 6874 阅读 · 2 评论 -
设计模式:策略模式
策略模式能够将每一个策略封装到一个类中,这些类又具有共同接口,利用Java多态的特性就能够实现它们的相互替换。例如我们去图书馆买书,会有很多种类的书,但是我们支付的时候都是去同一个地方支付的。因为收银员可以根据书本的条形码,执行不同的策略类计算书的价格。在这个时候,首先收银员要通过书的条形码知道是哪一本书,才能得到价格。策略模式也是如此,虽然策略类之间能够相互替换,但是收银员需要知道自己要调用哪一个策略类,才能知道金额。案例设计一个网上书店,该系统中所有的计算机类图书(ComputerBook)每本都原创 2021-06-18 21:16:19 · 297 阅读 · 0 评论 -
命令模式
**命令模式将请求发送者与请求接受者解耦,请求发送者通过命令对象来间接引用接收者,使得系统具有更好的灵活性。**可以再不修改现有系统源代码的情况下将相同的发送者对应不同的接受者,也可以将多个命令对象组合成宏命令,还可以在命令类中提供用来撤销请求的方法。定义将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作模式或事务模式。本质命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割原创 2021-05-02 19:51:37 · 229 阅读 · 0 评论 -
组合模式
案例使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、音频视频文件MediaFile。绘制类图并编程实现。类图如下:代码如下:public abstract class File { abstract void add(File file); abstract void remove(File file); abstr原创 2021-05-02 18:40:42 · 616 阅读 · 0 评论 -
适配器模式
动机通常情况下,客户端可以通过目标类的接口访问到它所提供的服务。有时现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。这时候就需要适配器,适配器的出现可以保证在不修改原有目标类和客户端代码的基础上确保能够重用现有的类。定义讲一个类的接口转换成用户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。(1)类适配器模式(2原创 2021-04-24 09:26:05 · 142 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式是工厂方法模式的泛化版,工厂方法模式是一种特殊的抽象工厂模式。在工厂方法模式中,每一个具体工厂只能生产一种具体产品,而在抽象工厂方法中,每一个具体工厂可以生产多个具体产品。定义抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。组成抽象工厂模式包含四个角色:抽象工厂、具体工厂、抽象产品、具体产品。举例接着上一次工厂方法举的例子:电视机有很多品牌,但是每一个电器品牌并不是只做电视机的,还会涉及其他电器:冰箱原创 2021-04-22 19:54:39 · 294 阅读 · 0 评论 -
原型模式
定义在软件系统中有时候需要多次创建某一类型的对象,为了简化创建过程,可以只需要创建一个对象,然后再通过克隆的方式复制出多个相同的对象,这就是原型模式的设计思想。因为是使用克隆获取多个对象,因此原型模式可以分为两种形式:浅克隆、深克隆。浅克隆:对于基本数据类型,会进行数据的复制。而对于引用类型,只会复制其地址。因此,如果A是B浅克隆的结果,那么当我们修改A或B其中一方基本数据类型的值,另一方不会受到影响;但是如果我们修改其中一方的引用类型数据,另一方也会跟着一起改变,因为变量存储的只是一个地址值,它们原创 2021-04-21 20:20:10 · 93 阅读 · 0 评论 -
工厂方法模式
工厂方法模式属于创建型模式。它是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的缺陷,更好的符合“开闭原则”的要求。当我们添加一个新的产品对象的时候,不需要对已有系统做任何修改,只需要添加一个新的产品类和新的工厂。将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。定义:在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例原创 2021-04-20 10:35:16 · 160 阅读 · 0 评论 -
简单工厂模式
简单工厂模式又称为静态工厂模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。工厂类只负责创建对象,而不必关心对象的实现细节。举例水果有很多种,有苹果、橙子、香蕉等,利用简单工厂模式,我们应该创建一个水果类Fruit,然后具体的水果继承这个类。还需要创建一个工厂类FruitFactory负责创建这些水果的实例。类与类之间关系图如下:代码如下:Fruit.javapublic ab原创 2021-04-19 23:09:48 · 196 阅读 · 0 评论 -
设计模式七大设计原则
单一职责原则定义:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。开闭原则(OCP原则)对扩展开放,对修改关闭.(即设计一个模块的时候,应该保证能使得这个模块原先的代码不改变的前提下进行扩展)为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。开闭原则还可以通过更加具体的“对可变现封装原则”来描述,对可变性封装原则要求找到系统的可变因素并将其封装起来。对每一个模式进行优缺点评价时都会以开闭原则作为一个重要的评价依据,以判断基于该模式设计的系统是否具备良好的灵原创 2021-04-19 22:07:40 · 119 阅读 · 0 评论