![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 76
二哈会java
这个作者很懒,什么都没留下…
展开
-
二哈谈设计模式之总结
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2021-10-08 18:08:02 · 277 阅读 · 0 评论 -
二哈谈设计模式之访问者模式
访问者模式文章目录访问者模式前言一、具体实现1.访问者接口2.具体访问者类3.抽象元素类4.具体元素类5.对象结构角色6.测试类二、应用场景总结前言定义表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变个元素的类的前提下定义作用于这些元素的新操作核心对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。结构访问者(Visitor):为该对象结构中的具体元素角色声原创 2021-09-18 14:07:11 · 80 阅读 · 0 评论 -
二哈谈设计模式之策略模式
策略模式文章目录策略模式前言一、具体实现简单实现策略模式1.策略接口2.具体策略实现3.上下文4.测试类二、应用场景总结前言核心策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法结构策略接口(Strategy):用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略,实现定义的算法。具体策略实现(ConcreteStrategy):具体算法的实现。上下文(Con原创 2021-09-18 11:47:25 · 78 阅读 · 0 评论 -
二哈谈设计模式之状态模式
状态模式文章目录状态模式前言一、具体实现1.环境角色2.抽象状态角色3.具体状态角色4.测试类二、应用场景总结前言核心用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题结构环境角色(Context):环境类中维护一个State对象,定义了当前的状态。抽象状态角色(State):定义一个接口,用以封装环境对象的一个特定的状态所对应的行为。具体状态角色(ConcreteState):每一个具体状态类都实现了环境的一个状态所对应的行为。一、具体实现例如:酒店系统中,房间的原创 2021-09-17 14:40:01 · 66 阅读 · 0 评论 -
二哈谈设计模式之观察者模式
观察者模式文章目录观察者模式前言一、具体实现1.抽象主题角色2.抽象观察者3.具体主题角色4.具体观察者5.测试类二、JdK内置观察者1.具体主题角色2.具体观察者3.测试类三、应用场景总结前言概念观察者模式主要用于1∶N的通知。当一个对象(目标对象Subject或Objservable)的状态变化时,他需要及时告知一系列对象(观察者对象,Observer),令他们做出响应。通知观察者的方式:推——每次都会把通知以广播方式发送给所有观察者,所有观察者只能被动接收。拉——观察者直到有情况原创 2021-09-17 13:45:14 · 80 阅读 · 0 评论 -
二哈谈设计模式之备忘录模式
备忘录模式文章目录备忘录模式前言一、具体实现1.源发器类2.备忘录类3.负责人类4.测试类二、应用场景总结前言概念备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后可将该对象恢复到原先保存的状态。结构源发器类(Originator):创建一个备忘录对象,使用备忘录储存它的内部状态。备忘录类(Memento):将源发器的内部状态储存起来,源发器根据需要决定备忘录储存源发器的哪些内部状态。负责人类(CareTaker):负责保存好备忘录对象,不能原创 2021-09-16 17:38:20 · 58 阅读 · 0 评论 -
二哈谈设计模式之中介者模式
中介者模式文章目录中介者模式前言一、具体实现二、应用场景总结前言概念如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为“同事对象”。我们可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为如下的星形结构。结构抽象中介者(Mediator):定义了同事对象到中介者对象的接口具体中介者(Concrete Mediator):实现抽象类的方法,通过协调各同事对象,实现协作行为,为此它要指导并引用各个同事对原创 2021-09-16 13:30:58 · 73 阅读 · 0 评论 -
二哈谈设计模式之迭代器模式
文章目录前言一、具体实现1.定义迭代器接口2.定义聚合类3.测试类二、应用场景总结前言迭代器模式,又称游标模式。这种模式提供一个方法访问容器对象中的各个元素,而又不暴露该对象的内部细节。一、具体实现1.定义迭代器接口/** * 自定义的迭代器接口 * @author Administrator * */public interface MyIterator { void first(); //将游标指向第一个元素 void next(); //将游标指向下一个元素 boo.原创 2021-09-14 18:14:25 · 61 阅读 · 0 评论 -
二哈谈设计模式之命令模式
命令模式文章目录命令模式前言一、具体实现1.抽象主板(抽象接收者)2.主板实现(接收者)3.抽象命令接口4.具体命令5.提供机箱(调用者)6.客户类二、应用场景总结前言概念将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式、事务transaction模式结构Command抽象命令类:定义命令接口,声明执行方法ConcreteCommand具体命令类:命令接口的实现对象,通常会持有接收对者,原创 2021-09-14 17:14:52 · 36 阅读 · 0 评论 -
二哈谈设计模式之解释器模式
解释器模式文章目录解释器模式前言一、具体实现1.抽象解释器2.变量解析器3.符号解析器4.加法解析器5.减法解析器6.封装计算器7.测试类二、应用场景总结前言是一种不常用的设计模式,用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。当我们需要开发一种新的语言时,可以考虑使用解释器模式。但是,尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用Jruby,Groovy、java的js引擎来替代解释器的作用,弥补java语言的不足。一、具原创 2021-09-03 18:09:06 · 74 阅读 · 0 评论 -
二哈谈设计模式之责任链模式
责任链模式文章目录责任链模式前言一、具体实现1.实体类(请假信息)2.抽象处理者角色3.具体处理者角色4.测试类二、应用场景总结前言定义将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。场景– 打牌时,轮流出牌– 接力赛跑– 大学中,奖学金审批– 公司中,公文审批案例:在公司中,请假的审批流程为︰如果请假天数小于3天,主任审批如果请假天数大于等于3天,小于10天,经理审批原创 2021-08-30 11:43:19 · 71 阅读 · 0 评论 -
二哈谈设计模式之模板方法模式
模板方法模式文章目录模板方法模式前言一、具体实现1.抽象模板2.子类继承3.测试类二、三类模板方式三、应用场景总结前言介绍∶模板方法模式是编程中经常用得到模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即∶处理步骤父类中定义好,具体实现延迟到子类中定义原创 2021-08-30 11:05:19 · 87 阅读 · 0 评论 -
二哈谈设计模式之代理模式
代理模式文章目录代理模式前言一、静态代理1.抽象对象2.真实对象3.代理对象4.测试类二、动态代理1.抽象对象2.真实对象3.动态代理(JDK自带)4.代理对象5.测试类三、应用场景四、面向切面AOP介绍总结前言核心作用:通过代理,控制对对象的访问!可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。(即:AOP的微观实现!)AOP(Aspect Oriented Programming面向切面编程)的核心实现机制!核心角色:抽象角色定义代原创 2021-08-26 10:00:38 · 62 阅读 · 0 评论 -
二哈谈设计模式之享元模式
享元模式文章目录享元模式前言一、具体实现1.抽象享元对象2.具体享元角色3.享元工厂角色4.测试类二、应用场景总结前言场景:内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存。核心:享元模式以共享的方式高效地支持大量细粒度对象的重用。享元对象能做到共享的关键是区分了内部状态和外部状态。内部状态:可以共享,不会随环境变化而改变外部状态:不可以共享,会随环境变化而改变享元模式实现:-FlyweightFactory享元工厂类原创 2021-08-19 18:15:54 · 102 阅读 · 0 评论 -
二哈谈设计模式之外观模式
外观模式文章目录外观模式前言一、具体实现1.抽屉类2.外观类3.测试类二、应用场景总结前言迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用外观模式核心:为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。一、具体实现以抽屉问题为例,假设我们把文件放在了第二个抽屉里面,而第二个抽屉的钥匙放在了第一个抽屉里面。假如是n个抽屉呢?客户要取出这个文件,客户不需要知道取钥匙的过程。他们只需要一个按钮,然后文件就会被取出。1.抽屉类/** * 第一个原创 2021-08-19 17:28:20 · 59 阅读 · 0 评论 -
二哈谈设计模式之组合模式
组合模式文章目录组合模式前言一、场景二、具体实现1.透明方式2.安全方式三、应用场景总结前言组合模式体现了整体与部分的关系,其典型的应用就是树形结构,其表示“整体-部分”的层次结构。组合模式核心:抽象构件角色:定义了叶子和容器构件的共同点叶子构件角色:无子节点容器构件角色:有容器特征,可以包含子节点一、场景使用Composite模式来实现文件系统的”文件/目录“结构,需要规划的类如下:Root:File与Folder的共同接口界面。Folder:目录。目录下有子目录、原创 2021-08-11 18:52:13 · 96 阅读 · 0 评论 -
二哈谈设计模式之桥梁模式
桥梁模式文章目录桥梁模式前言一、场景二、具体实现1.引入库2.读入数据应用场景总结前言桥接模式核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联提示:以下是本篇文章正文内容,下面案例可供参考一、场景商城系统中常见的商品分类,以电脑为类,如何处理商品的分类?可以用多层继承结构实现:问题:扩展性问题(类个数膨胀问题):如果要增加一个新的电脑类型:智能手机,则要增加各个品牌下面的类。如果要增加一个新的品牌,原创 2021-08-11 16:35:12 · 73 阅读 · 0 评论 -
二哈谈设计模式之适配器模式
适配器模式文章目录适配器模式前言一、类适配器1.目标接口2.需要适配的类3.适配器二、对象适配器适用场景前言将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。模式中的角色:– 目标接口:客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。– 需要适配的类:需要适配的类或适配者类。– 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。一、类适配器1.目标接口/** *原创 2021-07-23 16:59:22 · 50 阅读 · 0 评论 -
二哈谈设计模式之原型模式
原型模式文章目录原型模式前言一、浅拷贝与深拷贝1.浅拷贝2.深拷贝二、序列化实现拷贝应用场景总结前言– 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。– 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点。– 优势有:效率高(直接克隆,避免了重新执行构造过程步骤) 。– 克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性值完全和原型对象相同。并且克隆出的新对象改变不会影响原型对原创 2021-07-22 15:08:54 · 90 阅读 · 0 评论 -
二哈谈设计模式之建造者模式
建造者模式–分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。– 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。文章目录建造者模式前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例原创 2021-07-21 18:10:20 · 94 阅读 · 0 评论 -
二哈谈设计模式之单例模式
单例模式文章目录单例模式前言一、饿汉式二、懒汉式三、双重检查锁式四、静态内部类式五、枚举单例总结前言单例模式,保证一个类只有一个实例,并且提供一个访问该实例的全局访问点,优化环共享资源访问,常见的五种单例模式的实现方法:饿汉式:线程安全,调用效率高。但是,不能延时加载懒汉式:线程安全,调用效率不高。但是,可以延时加载双重检测锁式:由于JVM底层内部模型原因,偶尔会出问题。不建议使用静态内部类式:线程安全,调用效率高。但是,可以延时加载枚举单例:线程安全,调用效率高,不能延时加载一、饿汉式原创 2021-07-20 16:17:13 · 62 阅读 · 0 评论 -
二哈谈设计模式之工厂模式
设计模式之工厂模式提文章目录设计模式之工厂模式前言一、简单工厂模式1.先定义一个接口(运动员)2.创建两个接口的实现类3.创建工厂(球员俱乐部)4.具体实现二、工厂方法模式1.定义一个接口(运动员)2.创建两个接口的实现类3.创建工厂接口4.创建具体工厂5.具体实现三、抽象工厂1.简单工厂模式2.抽象工厂模式总结前言工厂模式是比较常用的设计模式之一,工厂模式相当于创建实例对象的new,我们经常要根据类生成实例对象。所以,当我们用new时,要考虑是否使用工厂模式,虽然这样带来了很多额外的工作原创 2021-07-19 17:49:18 · 135 阅读 · 0 评论