自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 问答 (1)
  • 收藏
  • 关注

原创 装饰器模式

装饰器模式就是在不改变原对象的基础上,通过对其进行包装扩展(添加属性或方法),使原有对象可以满足用户的更复杂需求,满足开闭原则,也不会破坏现有的操作。 目的 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 优点: 装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。 缺点: 多层装饰比较复杂。 代码实现: 场景: 在一个游戏里有一辆轻型坦克,喷气式战斗飞机和小口径子弹。 /** * @Author huyou

2021-03-29 15:53:53 188 1

原创 组合模式

组合模式(一种树状结构)是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 目的: 将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 优点: 1、高层模块调用简单。 2、节点自由增加。 缺点: 在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。 场景:一个树状结构是由目录和文件混合组成的,例如IDEA编译器的目

2021-03-29 14:28:11 106

原创 享元模式

享元模式(共享元数据)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 使用目的: 在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 优点: 大大减少对象的创建,降低系统的内存,使效率提高。 缺点: 提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。

2021-03-29 14:11:19 141

原创 原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 如何实现: 1,实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有

2021-03-29 13:51:01 100

原创 代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 目的 在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。或者在一个系统中,对有所方法进行加强或者日志打印而不用改变原有的方法。 如何实现 使用一个代理类,为其他对象提供一种代理,并以控

2021-03-28 12:28:00 81

原创 观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。 如何解决:使用面向对象技术,可以将这种

2021-03-25 16:57:23 201 2

原创 责任链模式

定义 一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。 应用场景 为完成同一个请求,如果存在多个请求处理器以及未知请求处理器个数或者请求处理器可动态配置的情况下,可以考虑使用责任链模式。 场景 处理消息敏感词,替换文本 定义一个filter接口,并让处理文本的类实现接口 class Msg { String name; String msg; public String getName() { return name; } pu

2021-03-24 16:34:31 65

原创 工厂模式

任何可以生产对象的方法或者类,都可以称之为工厂,工厂模式分为简单工厂模式,工厂方法模式和抽象工厂模式,它们都属于设计模式中的创建型模式。 单例也是一种工厂 思考:为什么对象可以通过new出来,为什么还要有专门制造对象的工厂? 工厂模式可以灵活的控制生产过程,权限、日志,修饰… 标题代码设计 场景,比如每天上班都用不同的交通工具,第一天开飞机,第二天开汽车,第三天骑扫帚 首先我们定义三个交通工具的类,我们可以为这些交通工具写一个公共的接口,所有交通工具都实现这些接口 飞机 /** * @Author huy

2021-03-24 15:23:21 115

原创 策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 介绍 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。 如何解决:将这

2021-03-22 17:34:22 240 3

原创 单例模式

单例模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 1,单例类只能有一个实例。 2,单例类必须自己创建自己的唯一实例。 3,单例类必须给所有其他对象提供这一实例。 代码实现 01-恶汉式-构造器私有 /** * @Author huyouting * @Date 2021/2/20 14:07 * @Description: */ /

2021-03-22 17:20:19 101 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除