![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式
设计模式专栏
大叔是个唐僧肉
一个爱打篮球的程序员
展开
-
设计模式之大话细品ISS 原则、YAGNI 原则和DRY 原则(三)
KISS 原则:尽量保持简单KISS原则是保证代码可读和可维护的重要手段。并不是代码行数越少就符合KISS原则,如果简单几行代码却使用了复杂的类库方法,也是不符合KISS原则的。同样对于复杂的问题采用复杂的方法也不一定就不符合KISS原则。YAGNI 原则:不需要的就不要使用YAGNI原则理解也很简单,比如目前的需求不需要实现这个功能就不要实现,如果为了满足需求变化可以预留扩展点。还有一个典型的例子是,项目中不需要的jar就不要引入它。DRY 原则: 不要写重复的代码如果判断是否符合DR原创 2020-08-09 07:40:13 · 187 阅读 · 0 评论 -
设计模式之浅析面向对象编程语言的四大特性
浅析面向对象编程语言的四大特性:面向对象编程简称OOP,是时下应该最广最普及的一种编程方式或者编程风格。对应的是面对对象编程语言。Java是目前最普及应用最广的面向对象编程语言之一。说的面向编程语言也就不得不说其四大特性:封装、继承、多态和抽象。下面在重新简单认识一遍:封装:也叫作数据保护和信息隐藏。类仅暴露必要的访问函数,授权外部类来进行数据访问。在Java语言中通过private、public等权限访问关键字来实现控制。封装主要解决类不被暴露更多属性给调用,让调用者通过授权的函数方法来实现数据访原创 2020-08-08 01:25:38 · 824 阅读 · 0 评论 -
设计模式学习之简单聊聊如何写出优秀的代码
前言:到底什么样的代码是优秀的代码?这个恐怕是仁者见仁、智者见智的问题。一个程序员随着能力的提升和视野的开拓不同的阶段看待这个问题会有不一样的答案。不过常见的一些评判的标准,像可维护性,可扩展性、可读性等等,都是常常听到的词语。代码的评判标准:可维护性: 维护本身的含义就是指在不破坏原有的设计意图上进行修修补补,能快速的修改bug或者增加新的功能点。曾几何时你是不是也对着前同事的代码,在心里奔腾过无数猛兽。是不是也因为修复bug却搞出了其他bug。造成这种情况的根本原因是因为代码的本身可维护..原创 2020-08-07 23:55:48 · 185 阅读 · 0 评论 -
设计模式指引
启迪篇:设计模式之领航篇高内聚和低耦合设计模式之大话细品设计原则(一) 设计模式之大话细品设计原则(二)创建类模式:单例模式,工厂方法模式、抽象工厂模式,建造者模式、单例模式和原型模式java之设计模式(单例)(单例模式) 设计模式学习之如何正确使用单例模式(单例模式) 设计模式学习之如何建造一个简单工厂(工厂方法模式) 设计模式学习之工厂扩大规模怎么办(抽象工厂模式) 设计模式学习之假如你是一个建造者(建造者模式) 设计模式学习之原型分身术(原型模式)结构类模式:适.原创 2020-08-05 22:15:31 · 132 阅读 · 0 评论 -
设计模式之解释器模式
1原创 2020-08-05 21:48:45 · 109 阅读 · 0 评论 -
设计模式学习之屡屡清楚状态模式
定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。状态模式的核心是封装,由于对象内部状态的改变,从而使这个类改变了其行为,看起来就像是换了一个类一样。三个角色:State抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteState具体状态角色每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。Context环境角色定义客户端需要的接口,并且原创 2020-08-02 21:46:33 · 322 阅读 · 0 评论 -
设计模式学习之不常用的访问者模式
1原创 2020-08-02 08:46:10 · 128 阅读 · 0 评论 -
设计模式学习之后悔药的制作过程
1原创 2020-07-29 20:58:41 · 432 阅读 · 0 评论 -
设计模式学习之是看起来的样子吗?(门面模式)
定义:门面模式也叫做外观模式,是一种常用的封装模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。角色分类:Facade门面角色:客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没有实际的业务逻辑,只是一个委托类。 subsystem子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。子系统并不原创 2020-07-23 22:50:48 · 118 阅读 · 0 评论 -
设计模式学习之我的心思你不用猜
定义:观察者模式又叫发布订阅模式,定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。角色分类:Subject被观察者:定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。 Observer观察者:观察者接收到消息后,即进行update(更新方法)操作,对接收到的信息进行处理。 ConcreteSubject具体的被观察者:定义被观察者自己的业原创 2020-07-23 20:22:51 · 117 阅读 · 0 评论 -
设计模式学习之如何组合一个树(组合模式)
定义: 组合模式也叫合成模式,有时又叫做部分-整体模式,主要是用来描述部分与整体的关系。对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。现在生活中有很多这样的例子,比如:公司的职级体系,文件的目录接口,包括我们的亲属关系等待,都可以用这种树形结构的设计模式来设计。组合模式的角色:Component:抽象定义的基础组件,包含组合对象默认的方法和属性,叶子和树枝构件都继承于它。 Leaf:叶子构件或者叫叶子对象,遍历的最...原创 2020-07-22 21:09:36 · 512 阅读 · 0 评论 -
设计模式学习之程序变压器的工作原理(适配器模式)
定义: 适配器模式的定义是将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。就像一个变压器将高压电转换为低压电,因此适配器也称为变压器模式。下面是很形象的一个图:引用自设计模式之禅关键词:适配 转换实现:需求:现在有用户基本信息,用户家庭信息,用户办公信息三个接口,如何设计一个接口可以执行查询到用户的姓名,家庭住址和办公电话设计思路:通过适配器的思想,用户基本信息、用户家庭信息和用户办公信息是现有的实现接口和...原创 2020-07-19 21:08:48 · 277 阅读 · 0 评论 -
设计模式学习之锦囊妙计定乾坤
策略模式原创 2020-07-19 10:29:05 · 208 阅读 · 0 评论 -
设计模式学习之—我是一个粉刷匠(装饰模式)
装饰模式定义: 装饰模式就是动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。装饰模式实现:需求:净水器公司想要搞一波营销活动,买送净水机送三种礼品:鸡蛋,雨伞,洗菜盆,但是销售比较鸡贼这三种礼品不是必须都送的,会根据消费者的购买意愿来由销售来送几种礼品。设计思路:实现抽象的Gift类是原始对象,有giveGift方法;SaleGift类是最核心的类,必须会执行也是需要装饰的类;Decorator类是装饰的抽象类,GiftDecorator1和Gif...原创 2020-07-18 16:49:17 · 244 阅读 · 0 评论 -
设计模式学习之—把对象串成一个链(责任链模式)
责任链模式的定义: 责任链模式就是使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。责任链模式重点是在链上,链上的节点都有可能处理请求,前提是必须是符合处理该节点处理条件,如果不符合将继续查找下一个节点,而处理功能通常会采用递归的形式。责任链模式的实现:需求:完成公司请假模块的开发,公司现在请假流程还是比较简单的,只需要向自己的上级领导请示通过就可以了,公司一个有组员,组长,总监,总经理四个职...原创 2020-07-18 14:38:04 · 260 阅读 · 0 评论 -
设计模式学习之一个命令就可以搞定
1原创 2020-07-16 20:34:09 · 129 阅读 · 0 评论 -
设计模式学习之当好一个中介难不难
3原创 2020-07-14 10:44:16 · 138 阅读 · 0 评论 -
设计模式学习之原型分身术(原型模式)
原型模式的定义: 分身术说的其实就是设计模式中的原型模式。原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。听着和神仙剧的中的分身术十分相似。如何使用原型模式:需求:某银行举办清凉一夏抽奖活动,需要通过邮件的形式通知到客户设计思路:邮件内容基本保持一致,主要区别是收件人。活动内容不定期改变,定义成活动模板。为了保证线程安全和消息准确性每发一次邮件就需要新建一个邮件内容类。类图设计:代码实现:package com.specify;/...原创 2020-07-11 12:33:40 · 178 阅读 · 0 评论 -
设计模式学习之如何找一个合适的代理(代理模式)
1原创 2020-07-05 16:30:44 · 2594 阅读 · 0 评论 -
设计模式学习之假如你是一个建造者(建造者模式)
4原创 2020-06-27 11:27:35 · 144 阅读 · 0 评论 -
设计模式学习之有了工厂为啥还有模板
基本定义: 模板方法模式(Template Method Pattern) 是定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简单的说就是模板类提供了结构或者步骤,而子类在不改变步骤的前提下,实现自己特有的细节。模板类和子类是一种继承关系。举例: 定义一个抽象的模板类,模板类包含若干基本方法,模板方法(统一调用模板方法),钩子方法,确认模板方法中的执行顺序和结果(方便子类扩展,符合开闭原则)。除模板方法...原创 2020-06-21 20:32:39 · 132 阅读 · 0 评论 -
设计模式学习之工厂扩大规模怎么办(工厂模式二)
抽象工厂模式是工厂方法模式的升级版,也是工厂模式最抽象的以中国模式。抽象工厂模式的定义是为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类,抽象工厂模式对应的是更复杂的情况。在工厂方法模式中,如有新的需求改动,只能修改工厂类,新增或修改工厂类,这样违背了开闭原则,于是抽象工厂原则应运而生。原创 2020-06-14 18:29:57 · 343 阅读 · 0 评论 -
设计模式学习之如何建造一个简单工厂(工厂模式一)
工厂方法模式是经常使用的一种设模式,基本可以分为产品,工厂和使用者。定义一个用于创建对象的接口,它的子类决定实现实例化哪一个类。最基本的工厂方法模式:包括一个抽象工厂类,定义工厂;工厂类实现工厂生产的具体细节;产品的抽象类,定义产品的属性和行为,实际的产品类,最终生产的产品。原创 2020-06-07 14:39:06 · 794 阅读 · 0 评论 -
设计模式之大话细品SOLID设计原则(二)
3.依赖倒置原则DIP依赖倒置中,依赖很容易理解,但是倒置可能会有些晦涩。首先了解下正置,正置就是指的实实在在的类间的关系,依赖是靠实实在在的类。而本事编程思想中,就是将具体变为抽象,倒置就是反编程思维,将依赖变为更抽象的类(接口或者抽象类)。依赖倒置原则有三层含义高层模块不应该依赖低层模块,两者都应该依赖其抽象; 抽象不应该依赖细节; 细节应该依赖抽象在Java语言中模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生。 接口或抽象类不依赖于实现类.原创 2020-06-06 13:29:25 · 158 阅读 · 0 评论 -
设计模式之大话细品SOLID设计原则(一)
1.单一职业原则SRP单一职责原则要求一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情。这个接口看似最容易理解,但是确是最难实现的一个原则。在设计接口中,如果不满足原则,可以拆分接口,这个很勉强可以接受。但是如果一个实体类不满原则,那该怎么办?拆分成几个类?在实际开发中要是这么干了,估计脑壳会被敲爆。原则是提供了一种规范,尺寸要把握合适。理解原则是方式,但是更多的在实践中如何运用。单一原则的优点:类的复杂性降低,实现什么职责都有清晰明确的定义; 可读...原创 2020-06-04 19:22:53 · 237 阅读 · 0 评论 -
设计模式之领航篇高内聚和低耦合
为什么要学习设计模式,首先我简单聊聊。在学习源码或者CodeView别的代码时,总会有这样的疑问,这个类为什么要这么写,这个基础模型有没有更好的实现方式?但是却说不出个所以然,为什么呢?一个人学习武功时,首先先会学习招式,然后学习心法口诀,招式是对敌之策,心法口诀是内功。平时写代码就是招式,编写代码的风格和方式五花八门。但是代码的奥义都逃不过编程的核心思想。编程思想是最基础的心法。而要想功夫更上一层楼还行多层次的修炼,设计模式就是其中的一个层次。...原创 2020-06-04 12:01:13 · 1003 阅读 · 0 评论 -
学习设计模式之你就是唯一(单例模式)
什么是单例? 用小学老师教的拆字组词理解法单例就是当个实例。结合定义来说,单例就是一个类只实例化一次,并且实例化的对象可供系统全局调用。原创 2020-06-07 14:38:35 · 283 阅读 · 2 评论