设计模式
系统的介绍常用的设计模式
硕子鸽
这个作者很懒,什么都没留下…
展开
-
设计模式之 —— 状态模式 State
引例在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为 有状态的对象 ,而把影响对象行为的一个或多个动态变化的属性称为状态。对这种有状态的对象编程,传统的解决方案是:将这些所有可能发生的情况全都考虑到,然后使用 if-else 或 switch-case 语句来做状态判断,再进行不同情况的处理。但是显然这种做法对复杂的状态判断存在天然弊端,条件判断语句会过于臃肿,可读性差,且不具备扩展性,维护难度也大。且增加新的状态时要添加新的 if-else 语句,这违背了“原创 2020-12-26 14:34:05 · 247 阅读 · 1 评论 -
设计模式之—— 桥接模式 Bridge
定义将抽象与实现分离,使它们可以独立变化。他是用 组合关系 代替 继承关系 ,从而降低了抽象和实现两个维度的耦合度。结构和实现桥接模式包含以下角色:抽象化角色:定义抽象类,并包含一个对实现化对象的引用;扩展抽象化角色:是抽象化角色的子类,实现父类中的业务方法,调用实现化角色的方法;实现化角色:定义接口,供扩展抽象化角色调用;具体实现化角色:给出具体实现。package bridge;public class BridgeTest { public static void原创 2020-12-25 18:27:33 · 240 阅读 · 0 评论 -
设计模式之——享元模式 Flyweight
我们经常抱怨学校的选课系统非常卡,这是什么原因呢?设想一下在选课高峰期,1 秒钟有 1000 人选课,程序在内存中同时创建 1000 个对象,服务器压力过大肯定卡啊,还有可能出现内存溢出的现象。但是我们仔细想一下这 1000 个对象,他们有什么共同点,我们选课会选择任课老师、课程名称等等,那么很多同学有可能选的都是同一节课,现在是每个同学选课都会重新创建一个新的选课记录对象,但是我们没必要这么做,因为这些对象有共性,他们除了学生的名字是不一样的,有可能任课老师和课程名都是同一个,这个时候我们可以共享这些原创 2020-12-24 06:00:37 · 359 阅读 · 0 评论 -
设计模式之——组合模式 Composite Pattern
引例在介绍之前我们先来看一个例子,是关于公司的人事管理系统的:这是一个典型的树形结构,那么我们怎么才能用代码表示他呢?分析:总共有两种不同性质的节点:有分支的节点:根节点:总经理树枝节点:研发部经理无分支的节点:叶子节点:开发人员那这么说,定义三个类不就行了,如下图:那我们就按照这个类图实现一下代码:首先是 根节点接口 :/** * 根节点接口 * * @author wang suo * @version 1.0 * @date 2020/12/21原创 2020-12-22 22:05:05 · 366 阅读 · 1 评论 -
设计模式——六大设计原则
一、单一职责原则单一职责原则简称 SRP,他想表达的就是字面意思,一个类只承担一个职责。有时候我们可以将一个复杂的接口拆成两个不同的接口,这两个接口承担着不同的责任,这就是依赖了单一职责原则;它的定义就是:应该有且仅有一个原因引起类的变更。关于 职责 的定义很模糊,什么才是职责呢?不同的人有不同的解读,所以该原则很难运用,需要开发者的慧眼。下面以大学学生工作管理程序为例介绍单一职责原则的应用。二、里式替换原则里式替换原则也叫 LSP 原则,没错就是你想的那个 lsp ????。其实是英文原创 2020-12-21 21:27:19 · 395 阅读 · 0 评论 -
Design Patterns 之原型模式
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。原型模式的优点:Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份原创 2020-11-30 15:54:34 · 256 阅读 · 0 评论 -
Design Patterns 之工厂模式
现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简到繁一步一步迭代而来的,但对于调用者来说,却越来越简单。定义工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。下面我们来分别看一下这 3 种模式。一、简单工厂模式在简单工原创 2020-11-24 10:47:30 · 449 阅读 · 1 评论 -
Design Patterns 之命令模式
一、前言在许多设计中,经常会出现一个对象直接请求另一个对象调用其方法以达到某种目的的行为,这里的两个类之间就会出现紧耦合。这很不好,所以我们应该将 方法的请求者 和 方法的实现者 分开。比如我们可以直接用手按电视机上的按钮调节音量,这样对我们来说很麻烦,我们可以使用遥控器作为中介,相当于一个命令,这样以后就可以使用电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者)。二、结构命令模式包含以下角色:抽象命令类 Command:声明执行命令的接口;具体命令角色 Concrete原创 2020-11-02 09:11:28 · 280 阅读 · 1 评论