![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
大白手记
这个作者很懒,什么都没留下…
展开
-
设计模式-工厂模式(工厂方法+抽象工厂)
工厂将创建对象实例交给工厂,以创建不同的对象,减小系统耦合度。实例假设要生产不同的上衣,短袖/棉袄,我们应该怎么做?// 上衣抽象类public abstract class TopClothes { public abstract void show();}// 短袖public class ShortSleeve extends TopClothes{ @Override public void show() { System.out.println("我是短袖适合夏天穿"原创 2021-04-10 14:23:55 · 110 阅读 · 0 评论 -
设计模式-模板方法
模板方法父类中定义一个算法的框架,这个框架的一些步骤由子类实现,可以在子类不修改算法结构的前提下自定义某些步骤。代码网络连接都需要遵循 TCP 四层协议,依次是 应用层,链路层,网络层,网络接口层。对应的顺序是固定不变的,但是其中四层里面具体怎么做可以由自己决定。public abstract class Web{ void request(){ // 调用应用层 applicationLayer(); // 链路层 linkL原创 2021-03-26 21:55:36 · 109 阅读 · 2 评论 -
设计模式-原型模式
原型模式简介复制已有对象,生成一个与属性完全相同复制品。首先你必须遍历所有变量,但是有些对象的变量并不是相对于所有类可见的。我们可以把克隆过程委派给被克隆的实际对象。类图代码public interface Prototype { Prototype copy();}public class PrototypeA implements Prototype { private String name; private int age; public PrototypeA(Stri原创 2021-03-21 18:12:55 · 131 阅读 · 1 评论 -
设计模式-桥接模式
桥接模式简介将一些关系紧密的类拆分为抽象和实现两个独立的层次结构。例子例如空调和电视机,它们都有自己的遥控器,现在让你设计类该如何设计?分别设立空调,电视机,及它们的遥控器类问题:各个类之间耦合度过高,每一个设备都依赖于自己的遥控器,不利于扩展更改。解决:为设备和遥控器抽象处理,建立设备父类及对应的子类空调,电视机等—遥控器父类及对应的遥控器子类类图代码// 设备父类class Device{}// 空调class AirConditioner extends Devi原创 2021-02-28 17:55:13 · 65 阅读 · 1 评论 -
设计模式-组合模式
组合模式简介允许将对象组合成树状结构来表现,能够使客户以一致的方式处理个别方式以及对象组合。即将对象组装成树状结构,有的对象是叶子节点(没有子节点),有的对象是非叶子节点(有子节点)。实例电商平台中经常会对商品进行分类,例如一级分类:手机,生活用品等,手机之下又有二级分类:智能机,老年机等。智能机下有三级分类oppo,vivo,小米等。也有可能有四级分类,或二级即为具体商品。一个大盒子里面可能装有小盒子或物品,小盒子里也有可能装有更小的盒子或物品。类图引用设计模式之禅Head F原创 2021-01-29 00:16:07 · 130 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式简介介于不兼容的接口之间使其可以相互工作。实例手机的电源适配器,可以将 220V 电压转化为你手机所需要的电压java.util.Arrays#asList()将一组数据转化为 List 集合后端数据处理中有些数据是 xml 格式,有些是 json 格式,提供之间转化的工具类。类图也可用作两种格式间的相互转换引用https://refactoringguru.cn/design-patterns/adapter/java/example马士兵-设计模式.原创 2021-01-27 01:21:13 · 124 阅读 · 0 评论 -
设计模式-状态模式
状态模式简介相同的操作对于不同状态产生不同的作用。类图代码设计一个手机类假设按下音量减小键,此时手机有三个状态会产生不同的反应 open(打开状态此时处于亮屏按下向下键音量减小),close(此时处于关闭状态,按下手机亮屏),document(此时处于阅读文档状态按下向下翻页)public class Phone { String state; public void downKey() { if(state.equals("close")) { System.out.p原创 2021-01-23 23:53:00 · 119 阅读 · 0 评论 -
设计模式-外观模式
外观模式简介又称门面模式,如果你的程序使用非常多的类库整合,但是仅提供比较少的功能可以用到外观模式,将繁杂的细节封装起来。应用例如 web 开发中上传一件商品,需要调用 用户模块,购物车模块,商品模块,支付模块 等等非常繁杂的模块,可以把这些模块的复杂调用封装起来。仅暴露给外部一个简单的接口即可。类图...原创 2021-01-21 23:10:38 · 89 阅读 · 0 评论 -
设计模式-享元模式
享元模式简介是池技术的重要实现方式,用于共享对象。应用Java 八大基本类型的包装类和 String例如开发一个射击类游戏,但是过多子弹对于内存的消耗极大,如果子弹不能及时回收可能会造成内存溢出,使用享元模式可以使子弹重复利用。类图代码// 伪代码// 享元类class Flyweight{};// 享元工厂class FlyweightFactory{ Flyweight flyweights[]; Flyweight getFlyweight()原创 2021-01-19 00:04:34 · 127 阅读 · 1 评论 -
设计模式-观察者模式
观察者模式简介定义对象中一种一对多的依赖关系,使得每一个对象改变状态,所有依赖于它的对象都会得到通知并自动更新。类图trator\AppData\Roaming\Typora\typora-user-images\image-20201220181107763.png)]应用java.util.Observer/ java.util.Observable (极少在真实世界中使用)java.util.EventListener的所有实现 (几乎广泛存在于 Swing 组件中)坦克大战,子弹原创 2021-01-18 00:21:07 · 88 阅读 · 0 评论 -
设计模式-装饰器模式
装饰器模式简介将对象放入特殊的装饰对象中从而使其获得新的行为应用java.io.InputStream、 OutputStream、 Reader 和 Writer 的所有代码都有以自身类型的对象作为参数的构造函数。java.util.Collections; checkedXXX()、 synchronizedXXX() 和 unmodifiableXXX() 方法。javax.servlet.http.HttpServletRequestWrapper 和 HttpServlet原创 2021-01-17 00:16:45 · 292 阅读 · 2 评论 -
设计模式-策略模式
策略模式简介封装好一个可以重复利用的算法族,以做到哪里需要哪里用。避免有多个相同或相似的算法需要使用大量的 if else实际应用JAVA AWT 中的 LayoutManager,可以使用多种布局方式,即为不同的策略坦克大战中如果需要发射不同的炮弹,可以指定不同的策略进行替换类图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVy6yoJu-1610723318733)(C:\Users\Administrator\AppData\Roaming\Typ原创 2021-01-15 23:10:12 · 116 阅读 · 0 评论 -
设计模式-单例模式
单例模式简介保证某一个类在内存中仅有一个实例应用Spring 中的 bean 全部是单例,一些常见的工厂类或管理类都是单例代码饿汉式,静态域初始化,在 JVM 加载的时候直接放到内存里,注意私有化构造方法使实例仅类本身可以创建public class Example01 { private static final Example01 INSTANCE = new Example01(); private Example01() {} public static Exampl原创 2021-01-14 23:22:27 · 144 阅读 · 2 评论