设计模式
文章平均质量分 53
qq_46048218
这个作者很懒,什么都没留下…
展开
-
组合模式
**组合模式:**也叫部分整体模式,他创建了对象组的树形结构,将对象组合成树状结构以表示整体和部分的层次关系 组合模式依据树型结构来组合对象,用来表示部分和整体的层次,这样的设计模式属于结构型设计模式,组合模式使得我们用户单个对象和组合对象具有访问一致性,可以让客户以一致的方式处理个别对象以及组合对象. 这是组合模式的类图 Component是组合中对象声明的接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理component子部件,component可以是抽象类或者接口 leaf在接口中表原创 2021-04-07 11:53:40 · 100 阅读 · 0 评论 -
外观模式
我对于外观模式,就简单聊一下我自己的理解吧,比如我们对接项目的时候发现其系统子系统很多,我们调用很麻烦,我们可以再开一个Facade类,把其子系统的细节隐藏,让客户端和子系统进行解耦,然后通过我们的facade类进行实现我们需要实现的细节 这里举个例子就是看病,我们要先挂号,然后付钱,再打针,我们要去各个部门进行操作很麻烦,如果我们有个引导者代我们去,那么我们的问题就迎刃而解. 举个简单例子很好理解 思想就是把挂号类和付钱类打针类都组合到我们的引导者,引导者指挥我们去做这些事情,就相当于把子系统的细原创 2021-04-07 11:12:34 · 116 阅读 · 0 评论 -
享元模式
享元模式:怎么理解,享就是共享,元就就是对象,官方来讲是运用共享技术支持大量细粒度的对象,常用于底层开发,比如我们的数据库连接池,里面都是创建好的对象,我们需要的直接拿来使用,如果没有我们需要的,则重新创建一个. 它主要解决的是重复对象内存浪费问题,如果在我们的系统中有大量对象,需要缓冲池的时候,我们可以直接去缓冲池里拿,降低我们系统的内存,提高我们的效率 享元模式应用就在Stirng常量池,数据库连接池,缓冲池,都是我们享元模式的应用,享元模式是我们池技术的重要实现 享元模式提出了两个要求,细粒度和共享对原创 2021-04-07 10:50:33 · 80 阅读 · 0 评论 -
桥接模式
桥接模式是指将抽象和实现放在两个不同的类层次中,使得两个层次可以独立改变. 他的特点就是把抽象和实现分开,从而保持各个部分的独立性以及对他们类的扩展 昨天晚上刷抖音的时候刷到了一个特别好的例子,就是开枪案例 我们人是抽象的,而我们开枪的实现是通过我们的枪进行实现的,所以这里我们的抽象就是人,实现就是枪,我们桥接模式,实际上就相当于搭了一座桥,让这两个之间进行联系,把实现聚合到我们的抽象之中,这样子,一方面解耦了,另一方面也有利于我们的扩展性 比如我们的手机和品牌案例,如果我们按照传统的方法进行实现,手机的品原创 2021-04-06 11:00:20 · 60 阅读 · 0 评论 -
装饰者设计模式
装饰者模式的概念:动态的将新功能附加到对象上,在对象的扩展上来说,他比继承更加的具有弹性 这里举一个例子比如我们进行点奶茶,我们可以添加奶盖,珍珠,椰果很多种选择,如果我们按照类与类之间的排列组合有多少种情况进行类的编写,那么我们的代码十分的臃肿,而且会产生类爆炸的现象,因为我们每次新增加一个类,我们就会多很多种组合,那么不利于我们的编写 像这种附加新功能到对象上的情况,我们可以利用我们的装饰者设计模式 这里从网上找了一个例子,就是点咖啡案例 我们的装饰者大概实现,实际就是让装饰者和具体的主体继承同一个抽象原创 2021-04-06 10:34:45 · 55 阅读 · 0 评论 -
适配器模式
适配器模式大致分为三类: 类适配器 对象适配器 接口适配器 其中类和对象适配器,很相像,先说类适配器吧 我们这里举个例子,比如手机充电,我们家庭安全电压是220V,而我们的手机只能支持5V电压,就有了我们的充电头也就是我们的适配器,我们可以把电源看做src 经过适配器转换的电压看做dest目标电压,只有我们的手机等于5V我们才能充电 这是我们的电源类 这是我们的转换器接口 而我们具体的适配器需要继承电源类实现我们的转换器接口,(这里有个不好的地方就是我们java中是单继承,所以有一定的局限性,但是我们继原创 2021-04-02 16:58:51 · 92 阅读 · 0 评论 -
建造者设计模式
这是构建者模式的类图, 我们把产品类组合到我们的抽象构建者中,由我们具体的构建者进行实现其细节方法操作,并将我们的抽象构建者聚合到我们的指挥者中,利用指挥者的construct方法进行把构建者中的细节方法进行组合 这里我也看过其他人的构建者博客,其中最好理解的就是KFC案例,把我们需要的套餐(饮料品种加汉堡品种)作为我们的product,我们的构建者就是方案A,B,我们的Director就是点单系统,构建者模式就是把一些制作过程相似的东西抽象出来 这里我做了一个案例 这是我们的产品类 这是我们的抽象构.原创 2021-04-01 22:50:47 · 66 阅读 · 0 评论 -
一个类加载小案例
以这个例子为案例,我们的main方法只有一个创建子类对象,这是打印的结果内容 我们可以观察到几个现象: **1:**为什么父类的show方法没有执行,其调用的是子类的show方法,其实这个很好理解,我们在程序运行的时候,我们把子类加载进内存,会继续找它的父类,如果找到父类就把父类加载进我们的内存里,如果子类有重写或者重载,我们子类的方法引用就会指向我们的子类方法,如果我们的子类没有重写或者重载,那我们的子类方法引用就指向我们的父类方法引用 **2:**什么时候会发生类加载 1:实例化对象 2:使用类...原创 2021-03-30 14:06:40 · 70 阅读 · 0 评论 -
设计模式七大原则
设计模式目的: 1.具有更好的代码重用性 2.更好的可读性 3.更好的扩展性 4.可靠性(增加新的功能对原来的功能没有任何的影响) 5.使得程序高聚合低耦合 设计模式的七大原则 1.单一职责原则 2.接口隔离原则 3.依赖倒转原则 4.里氏替换原则 5.开闭原则 6.迪米特原则 7.合成复用原则 1.单一职责原则: 这个很好理解,就是一个类只负责一项职责 这里举个例子,比如我们对于 像这样的代码就违反了单一职责,这里的轮船是不能在公路运行的,所以我们设计类与类的时候就要保持单一职责模式,比如设计这个小案例原创 2021-03-29 15:16:59 · 75 阅读 · 0 评论 -
观察者设计模式
按照我的理解,观察者设计模式,最简单好理解的例子就是气象台和观察站,大部分是1对多的关系,一旦气象台的数据进行改变,那么就会通知观察站自己的数据已经发生了改变,也可以理解为货仓,其他小商家进行进货,当仓库有货就会通知所有的小商家来进行购买 这里我们用气象台和观察站的例子 先上其uml图,因为我们是1对多进行操作,所以我们把观察者对象存入一个arraylist集合中,把集合聚合在我们的气象站中,接口提供三个抽象的方法,注册观察者,删除观察者,以及通知观察者,当我们的气候进行改变,就通过我们的气象站中的通知方原创 2020-10-08 21:20:49 · 104 阅读 · 0 评论 -
单例模式
饿汉式一般用这两种,一种静态常量一种静态代码块 优点:线程安全 缺点:类似于立即加载没有延迟加载,所以会造成内存资源的浪费,因为这两种方案都是通过类加载的时候进行创建对象的,而类加载的方法有很多种 这里插一点题外话,类加载有哪几种,一种就是我们熟悉的静态方法或者静态域被调用,还有就是对象的创建,也就是对象的实例化,类会被加载,还有一种就是java编程思想中提到的继承,继承的话类加载器会先加载其.class文件,然后如果发现基类,还会去加载其基类,也就是其父类也会被加载,比如下图 我们在main方法中只用.原创 2020-10-08 13:43:11 · 188 阅读 · 2 评论 -
原型模式以及深克隆和浅克隆
原型模式有很多好处 :创建比较复杂的对象,无需考虑过程,简化了创建对象的创建过程,同时也能提高效率 比如浅克隆的好处就是因为浅克隆克隆的是对象的引用,也就是克隆出来的原来的对象指向同一个内存空间,那么我们只需要修改其中一个,然后其他的也会被修改 深克隆可以通过对象流来实现 但是一定要注意,涉及到的每个类都需要序列化接口以及实现cloneable接口 所以这也算原型模式的一个缺点,而且深克隆的化代码也会复杂 ...原创 2020-08-31 23:50:49 · 323 阅读 · 0 评论 -
工厂设计模式
下面图是简单工厂模式类图,以下工厂模式都是关于披萨的制作 下面图是工厂方法模式类图,其实就是把抽象类中的方法进行抽象,由其子类进行实现抽象类的创建方法,把实例化对象推延到子类 下面图是抽象工厂模式类图,其实就是简单工厂模式的进阶,从单一的工厂变成了工厂簇 总结代码就不贴了,当我们设计一个东西,就比如这个披萨订购系统.为了考虑到设计模式中的对扩展开放,对修改关闭,首先在只有北京披萨和伦敦披萨的情况下,我们设计是把对象的创建交给了工厂进行创建,而我们以后修改代码就不用去修改order订单代码,就可以通过修原创 2020-08-30 23:48:21 · 83 阅读 · 0 评论