深入理解设计模式
文章平均质量分 78
有个金丝熊叫老许
大四应届生,家有两狗一鼠,主业篮球,副业码农,每日会不定时更新编程知识的总结,希望大家多多关注,我也会呈现出更高质量的文章。
展开
-
深入理解设计模式之中介者模式
假设我们要做一个销售系统,里面有采购管理,销售管理,存货管理,之间都相互依赖,我们该怎么做呢,先看图片:我们从这个示意图上可以看出,三个模块是相互依赖的。我们就以一个终端销售商(以服务最终客户为目标的企业,比如某某超市、某某商店等)为例,采购部门要采购IBM的电脑,它根据以下两个要素来决定采购数量。销售部门要反馈销售情况,畅销就多采购,滞销就不采购。即使是畅销产品,库存都有1000台了,每天才卖出去10台,也就不需要再采购了! 库房有货,才能销售。从以上分析来看,这三个模块都有原创 2022-05-08 12:05:49 · 278 阅读 · 0 评论 -
深入了解设计模式之原型模式(二)
深拷贝和浅拷贝在理解什么是深浅拷贝之前,我们先写个代码看个例子:public class Thing implements Cloneable{ private List<String> list = new ArrayList<>(); @Override protected Thing clone() { Thing thing = null; try { thing = (Thing)su原创 2022-05-07 12:19:32 · 83 阅读 · 0 评论 -
深入了解设计模式之原型模式(一)
假设我们需要做一个邮件发送系统,发送给银行客户的人,具体类图如下:具体代码实例如下:Mail:public class Mail { private String receiver; private String subject; private String appellation; private String context; private String tail; public Mail(AdvTemplate advTemp.原创 2022-05-06 22:23:16 · 110 阅读 · 0 评论 -
深入理解设计模式之代理模式
代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下:Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供 一种代理以控制对这个对象的访问。)我们来看代码具体实现:抽象主题类:public interface Subject { //定义一个方法 void request();}真实主题类:public class R原创 2022-04-29 16:21:28 · 176 阅读 · 5 评论 -
深入理解设计模式之建造者模式
老大突然拉住我,喜滋滋地告诉我:“公司很满意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我们公司制作了,不过这次额外增加了一个新需求:汽车的启动、停止、喇叭声音、引擎声音都由客户自己控制,想什么顺序就什么顺序”那我们开始设计,来看一下类图:类图比较简单,在CarModel中我们定义了一个setSequence方法,车辆模型的这几个动作 要如何排布,是在这个ArrayList中定义的。然后run()方法根据sequence定义的顺序完成指定 的顺序动作。我们来看模型抽象类代码:原创 2022-04-28 16:19:34 · 4600 阅读 · 10 评论 -
深入理解设计模式之模板模式
我们平时办理入职的流程是:填写入职登记表->打印简历->复印学历->复印身份证->签订劳动合同->建立花名册->办理工牌->安排工位。我平时在家里炒菜的流程是:洗锅->点火->热锅->上油->下原料->翻炒->放调料->出锅。以上这些都是模板模式的体现。模板模式又叫模版方法模式(Template Method Pattern),是指定义一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板模式使得子类可以在不改变算法结原创 2022-04-27 19:33:24 · 8411 阅读 · 16 评论 -
深入理解设计模式之工厂模式
在以前的生活中我们都知道,需要什么东西都得自给自足,非常不方便,随着社会和经济的发展,不同行业出现了一个一个的工厂,不仅解决了很多人的就业问题,而且让我们不再关注于制造所需方法本身,只需要告诉工厂,让工厂直接给你生产出来产品即可。简单工厂模式由一个工厂对象决定创造哪一种产品类的实例,我们用一段代码来讲述女娲造人的故事:首先定义一个接口,即我们需要的产品:public interface Human { //每个人种都有自己的肤色 void getColor(); //每原创 2022-04-19 17:39:27 · 153 阅读 · 0 评论 -
深入了解设计模式之单例模式(三)
接上回之讲,谈到枚举单例模式没有定义readReslove()方法,但是在反序列化的时候返回的仍是同一个对象,下面我们来揭开它的什么面纱:下载一个非常好用的反编译工具Jad(下载地址:https://varaneckas.com/jad/),解压后配置环境变量,就可以使用命令行调用了。After thirty minutes.........我电脑一直使用不了Jad反编译工具,又换了其他jd-gui也没给到我想要的效果,直接用javap -c进行反编译吧,代码如下:Compiled fro原创 2022-04-19 01:22:05 · 238 阅读 · 0 评论 -
深入了解设计模式之单例模式(二)
接上回之讲,我们通过反射来破坏单例模式,那么还有什么方法呢?序列化破坏单例模式一个单例对象创建好后,有时候需要将对象序列化写入磁盘,下次使用时再从磁盘读取进行反序列化,转化成内存里的对象。反序列化后的对象需要重新分配内存空间,重新创建。我们来看一段代码:public class Solution implements Serializable { private static final Solution INSTANCE = new Solution(); private原创 2022-04-18 00:46:10 · 203 阅读 · 0 评论 -
深入了解设计模式之单例模式(一)
单例模式的应用场景单例模式(Singleton Pattern)是确保一个类在任何情况下都绝对只有一个实例,并提供一个方法可以获取当前实例对象。单例模式是创建型模式。例如:生活中,公司的董事长,技术首席执行官都属于单例模式。源码中,Spring框架提供的Application Context,J2EE 标准中的ServletContext等也都是单例形式。饿汉式单例模式饿汉式单例模式在类加载的时候就立即初始化,并且创建单例对象。它绝对线程安全,因为类加载机制本身就是线程安全的,不存在访问安全问题原创 2022-04-17 00:02:46 · 270 阅读 · 0 评论 -
深入理解设计模式之设计原则(二)
接口隔离原则是指用多个专门的接口,而不要使用单一的总接口,客户端不应该依赖它不需要的接口,我们根据定义可以概括为以下几点:1,建立单一接口,不要建立臃肿庞大的接口。2,一个类对另一个类的依赖应该建立在最小的接口之上。3,尽量细化接口,接口中的方法尽量少(不是越少越好,适度)。接口隔离原则符合我们常说的高内聚,低耦合的设计思想,可以使类具有很好的可读性,可扩展性和可维护性。下面我们来看一段代码,来描述一个美女:public interface PrettyGirl { //要有漂亮原创 2022-04-15 17:49:43 · 357 阅读 · 1 评论 -
深入理解设计模式之设计原则(一)
什么是设计模式?它是一套理论,由软件界的先辈们总结出的一套可以反复使用的经验,它可以提高代码的复用性,增强系统的可维护性,解决一系列的复杂问题。需求是最难把握的,包括我们在实际开发的过程中,明白到需求的变更是不可控的,幸运的是,设计模式给了我们指导,大佬们首先提出了六大设计原则,设计原则的基础上诞生了23种设计模式。设计模式是一种思想,并不像Spring一样是一个工具,它是软件行业的经验总结,无论使用什么编程语言,设计模式都可以自由的侵入。单一指责原则...原创 2022-04-14 00:39:09 · 327 阅读 · 0 评论