设计模式
ks_zhe
Thread.sleep();
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式之备忘录模式
备忘录模式 1.需求: 存档问题 游戏角色有攻击力和防御力,在大战之前保存自己的状态(攻击力和防御力),如果在不慎修改之后,如何进行状态的恢复?? 2.解决方案: 传统方案 一个对象对应着一个保存对象的状态,这样当我们游戏的对象很多的时候,不利于管理 传统方式就是重新new了一个对象,进行备份(将原数据搬移到新的对象中),但是会暴露对象内部的细节 备忘录模式: 在传统模式的基础上进行修改,...原创 2020-03-17 17:20:24 · 362 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式 1.项目需求 设计一个智能家庭,家庭中包括各种设备(比如闹钟,咖啡机,电视机,窗帘等) 完成各个设备之间的协同工作,假设流程为: 闹钟响起 => 咖啡机开始做咖啡 => 窗帘自动落下 => 电视机开始播放 (这次项目的需求和外观模式一致,但是采用了和外观模式不一样的处理方式,外观模式是在类中进行多个子类逻辑的耦合,但是此次考虑使用中介者模式) 外观模式链接:htt...原创 2020-03-16 15:11:48 · 226 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式 1.需求:天气预报项目需求 气象站天天将测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或者第三方) 需要提供开放性API(温度,气压,湿度接口),便于推送 如何设计气象站(一)和多个推送网站(多)之间的关系? 2.观察者模式简单介绍 观察者模式维护了对象之间一对多的关系,被依赖的对象(一)是Subject,依赖的对象是Observer(多) 观察者模式会在...原创 2020-03-14 14:07:24 · 365 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式 1. 需求 编写程序展示一个学校院系结构:一个学校中有多个院,一个学院中有多个系 效果图: 2.解决方案 使用迭代器模式进行遍历,将数据的存储和数据的遍历进行分离 3.迭代器模式的简单介绍 迭代器模式(Iterator Pattern)属于一种常见的设计模式,属于行为型模式 如果我们的集合元素是用不同的方式实现(array or list or …),当客户端遍历这些集合元素的时...原创 2020-03-12 14:19:55 · 247 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式 1.简单介绍 访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,可以在不改变结构的前提下定义新的操作(作用于这些元素) 访问者模式主要是将数据结构和数据的操作进行分离,解决了数据结构和操作耦合性的问题 访问者模式的基本工作原理是: 在被访问的类里提供一个对外接待访问者的方法 void accept(Visitor visitor) 2.访问者中...原创 2020-03-09 14:09:28 · 273 阅读 · 0 评论 -
设计模式之命令模式
命令模式 1.需求 买了一套智能家电(如照明灯,风扇,洗衣机等等),但是不想每一个家电都用一个对应的app去控制,想做到使用一个“遥控器”统一控制所有电器 2.分析需求 如果想实现一个app控制其他所有家电,则其他家电都要提供一个统一的接口给app调用,可以尝试把命令和接收全部进行抽象化,附着在“家电”上。 同时可以考虑使用命令模式 3.命令模式的基本介绍 命令模式(Command Patt...原创 2020-03-07 14:56:12 · 311 阅读 · 0 评论 -
设计模式之模板模式
模板模式 1.需求:如何制作豆浆? 制作豆浆的流程: 选材 -> 添加配料 -> 浸泡 -> 放到豆浆机里打碎 制作豆浆的逻辑大体相同,在添加配料的时候可以选择添加不同的配料制作不同的豆浆(红豆豆浆,核桃豆浆) 解决方法: 使用模板模式模拟制作豆浆的过程 2.模板模式介绍 模板模式(Template Pattern)又称为模板方法模式(Template Method Pa...原创 2020-03-04 14:31:41 · 293 阅读 · 0 评论 -
设计模式之代理模式
代理模式(proxy) 1.基本介绍 代理模式为一个对象提供一个替身(代理对象),以控制对这个对象的访问。可以在目标对象实现基础上扩展功能(强化功能) 被代理的对象可能是远程对象,创建开销大的对象或者是需要安全控制的对象。 代理模式分几种不同的形式: 主要分为: 静态代理 动态代理(JDK代理) Cglib代理 2.静态代理 介绍 静态代理在使用的时候需要定义接口或者父类,被代理对象...原创 2020-03-02 14:44:51 · 235 阅读 · 0 评论 -
设计模式之享元模式
享元模式 1.需求 完成内容的不同展示方案 客户A电脑端发布 客户B博客发布 客户C微信公众号发布 2.解决方案 将内容直接复制若干份,然后根据不同的需求进行定制修改 分析 相似的实例对象出现多份,造成资源的冗余和浪费 多份相同或者相似的实例进行维护起来较为麻烦 解决方式:使用享元模式 3.享元模式简单介绍 .享元模式:"享"表示共享,"元"表示对象(字面上的意思就是共享对象) ...原创 2020-02-28 14:30:25 · 275 阅读 · 0 评论 -
设计模式之外观模式
外观模式 1.需求:设计一个家庭影院 组成部分: DVD遥控器,投影仪,自动屏幕,环绕立体声,爆米花机 过程: 开爆米花机 -> 放下屏幕 -> 开投影仪 -> 开音响 -> 开DVD,选择音乐 -> 调暗灯光 -> 播放电影 -> 观影结束,关闭所有设备 2.解决方案 传统方案: 构建客户端,然后直接调用各个设备的一系列方法(下图中的ClientTes...原创 2020-02-26 14:18:34 · 317 阅读 · 0 评论 -
设计模式之组合模式
组合模式 1.需求: 编写程序展示学校的院系要求 要在一个页面中展示出学校的院系组成,一个学校中有多个学院,一个学院中有多个系。 图示: 2.解决方案: 将学院看做是学校的子类,系看做学院的子类 实际上要求是体现出学校的院系组成,一个学校有多个学院,一个学院有多个系。因此这种方案不能很好实现管理操作。比如对学院,系的添加,删除,遍历等 解决问题: 将学校,院和系都看作组织结构,他们之...原创 2020-02-23 15:13:32 · 272 阅读 · 0 评论 -
设计模式之装饰者模式(包装模式)
装饰者模式 1.实例:咖啡订餐项目 咖啡种类/单品咖啡:Espresso(意大利浓咖啡),ShortBlack,LongBlack(美式咖啡),Decaf(无因咖啡): 调料: Milk(牛奶),Soy(豆浆),Chocolate(巧克力) 要求: 订单结算用户点的咖啡价格(用户可以单点咖啡,也可以点咖啡+调料的组合 。。比如点一杯美式咖啡+巧克力) 注: 最好在扩展新的咖啡种类和调料类的同...原创 2020-02-21 15:14:18 · 1869 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式介绍 1.实例 假设现在有一支画笔,可以用来画画,画正方形,长方形,三角形(这是java老师上课的时候一定会举的例子),但是现在需要为他们进行上色,即最后的结果是例如: 红色的三角形,绿色的正方形“,等… 思考: 现在有两种解决方法 为三种不同的形状提供各个颜色的实例(假设有三种形状,三种颜色,总共就要提供九个实例) 优点: 简单容易操作 缺点: 如果需要再加一个形状,就要再需要提供三...原创 2020-02-19 14:54:35 · 412 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式介绍 1. 简单介绍 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是实现兼容性 打个形象的比方: typec转3.5mm的手机接口,手机充电器(220v转5v) 适配器模式工作原理: 适配器模式就是将一个类的接口转换成为另一个接口,让原本不兼容的类可以兼容 用户调用适配器转换出来的接口方法,适配器调用被适配者的相关方法,达到用户...原创 2020-02-17 14:00:24 · 245 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式 1.需求 假设需要建房子,建房子的过程为打桩,砌墙,封顶。 房子有各种类型的:普通房子,高楼,别墅等等(本例中建造普通房子和高楼即可) 2.处理方案 思路1 将房子模板抽象出来,然后建立实体类继承抽象模板进行建房过程操作 代码实现 //抽象房屋 public abstract class AbstractHouse { //打地基 public abstract...原创 2020-02-14 15:45:54 · 217 阅读 · 0 评论 -
设计模式之原型模式
原型模式 原型模式基本介绍 举例和演示 深浅拷贝的介绍 原型模式的总结 1.原型模式基本介绍 原型模式是指: 采用原型实例创建对象的种类,并且通过拷贝这些模型创建新的对象 原型模式是一种创建性模式,允许一个对象以自身为模板,创建一个可定制的对象,无需知晓如何创建的细节 具体实现: 实现Cloneable接口,重写或者直接使用clone方法 2.举例和演示 假设现在存在一个类,然...原创 2020-02-12 14:56:43 · 246 阅读 · 0 评论 -
设计模式之工厂模式
1.工厂模式简介 工厂模式,就是将对象实例化的方法进行提取并封装,放到一个类中进行统一管理维护,达到与主项目降低依赖,降低耦合性。从而提高项目的扩展性和可维护性 假设你去买果汁,直接去果汁店,果汁店会根据你的需求给你做好饮品,直接喝就可以,不用考虑太多,这里的果汁店就类似于一个工厂(或者一个工厂簇),根据你提供的生产出实例(怎么突然想到spring的ioc...) 2.工厂模式的实现方...原创 2020-02-09 15:16:38 · 219 阅读 · 0 评论 -
设计模式之单例模式
1.单例模式简介 单例模式,就是采取一定的方法保证在整个的软件系统中,对某一个类只存在一个对象实例,并且该类只提供一个取得其对象的方法。 2.单例模式的实现方法 单例模式的实现方法分为8种,主要分为: 1.饿汉式(静态常量)(√) 2.饿汉式(静态代码块)(√) 3.懒汉式(线程不安全) 4.懒汉式(线程安全,同步方法) 5.懒汉式(线程安全...原创 2020-02-06 15:36:14 · 320 阅读 · 0 评论
分享