![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 60
小小小黄乐
野生程序猿.
展开
-
[设计模式]-外观模式
什么是外观模式 在子系统中的接口之上定义一个更高层次的接口,方便使用子系统中的接口; 补充说明 缺点:不符合开闭原则,修改子系统的代码会影响高层接口代码; 优点:引入外观类可以降低系统的复杂度,提高了客户端使用的便捷性; 优点:客户类与子系统解耦; 角色 子系统角色 外观角色 客户端角色 例子JAVA实现 模拟电脑开机情景,有三个子系统:BIOS系统,硬盘系统,操作系统;启动过程是先启动BIOS, 然后加载硬盘,然后启动操作系统; 子系统角色,BIOS系统 package com.pichen.dp.s.原创 2021-07-16 16:54:40 · 107 阅读 · 0 评论 -
[设计模式]-原型模式
什么是原型模式 通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型; 补充说明 1、JAVA中Object的clone方法已经为什么提供了复制对象的实现,且该方法为本地方法,性能好,在需要大量复制对象的情况,使用clone创建对象比new效率高; 补充下深拷贝和浅拷贝,深拷贝是通过拷贝内存(包括引用的对象)实现对象的创建;浅拷贝不拷贝引用的对象,但拷贝了引用的值,如果类的成员属性中都是基本类型,不含对象,也是可以达到深拷贝的效果;深拷贝可以通过将对象序列化成字节流以及反序列化实现,浅拷贝直接调用.原创 2021-07-16 16:51:38 · 96 阅读 · 0 评论 -
[设计模式]-代理模式
什么是代理模式 通过代理对象间接控制并访问目标对象的方法; 补充说明 想到代理模式,容易让人想到AOP思想,Spring中的AOP可以通过动态代理实现; 代理模式有静态代理和动态代理两种; 解耦调用者和被调用者; 角色 抽象主题,定义一些需要代理的方法 具体主题,实现一些具体逻辑 代理主题,代理和封装具体主题 客户端Main:调用者,通过代理主题访问具体主题 例子JAVA实现 这里我们模拟代理上网场景:应用服务器返回信息给代理服务器,代理服务器返回信息给客户端; 抽象主题,服务器接口,有一个..原创 2021-07-16 16:48:35 · 77 阅读 · 0 评论 -
[设计模式]-简单工厂模式
什么是简单工厂模式 一个工厂方法,依据传入的参数,生成对应的具体产品对象; 补充说明 不属于23种GOF设计模式; 工厂方法一般设成静态方法,返回值一般是抽象类或接口,具体的产品类一般继承或实现抽象类、接口; 优点:产品使用者不需要关心产品类的创建过程,与具体产品的实现类达到解耦的效果; 缺点:违背"开放–封闭"原则(OCP),因为新增一个产品类的时候,需要修改原先的工厂方法; 适用场合:当工厂类负责创建的对象比较少的时候; 角色 抽象产品 具体产品 具体工厂 产品使用者 具体产品继承抽象产品; 单个具体.原创 2021-07-16 10:52:53 · 63 阅读 · 0 评论 -
[设计模式]-适配器模式
什么是适配器 适配器是将一种接口改造成另外一种接口的一个包装类; 补充说明 有两种实现方式,一种是通过继承,另外一种通过组合; 使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口; 优点:符合开闭原则;适配者类和目标类解耦;代码复用; 角色 目标接口 适配器类 适配者类 使用者 例子JAVA实现 简介:现有一个USB接口和一个PSP接口实现类,功能都是进行充电,该例子的目的就是对PSP接口实现类进行包装,使之能用USB接口充电; package .原创 2021-07-16 10:45:42 · 64 阅读 · 0 评论 -
[设计模式]-单例模式
什么是单例模式 一个类只有一个全局实例; 补充说明 一般把其构造方法设为私有,另外提供一个可以获取该实例的静态方法; 由于java存在反射机制,即使是私有构造方法,也能被外部创建,所以一般的写法严格来讲不属于单例模式;(ps:可以在构造方法内加个静态flag标志判断,保证其只能创建一次) 违背了“单一职责原则”,该类既是工厂又是产品(自己创建了自己); 单例模式可以改造成固定大小的多例模式; 角色 只有一个角色,就是单例; Java例子 举几个常见的实用的例子 a、在类加载的时候生成对象(如生成该单例对象.原创 2021-07-16 10:30:18 · 69 阅读 · 1 评论