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