专业编程基础技术教程

网站首页 > 基础教程 正文

根据前人的文档学习下 装饰器模式

ccvgpt 2024-08-04 12:16:36 基础教程 8 ℃

今天偶然在看别人解析源代码文章的时候,看到了别人提到装饰器模式,本着不懂学习的态度看了一下教程:

http://www.runoob.com/design-pattern/decorator-pattern.html

根据前人的文档学习下 装饰器模式

做一下总结,顺便记录一下,主要目的是为了加深记忆。

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这句话说的一坨,搞的云里雾里的。 其实装饰器这种模式的作用就是就是不改变原有类的前提下,添加一些别的功能。主要目的是解决要改点功能,就得集成一个类的窘境。 比如说你实现了一个功能,老大过了两天说不行,还少点东西但是这个东西不能丢,那你又得继承这个类在实现一遍,过了几天老大又说不行,你又得继承一个类,再来一遍。

那如何在不想增加子类的情况下扩展类呢,就用了装饰器模式。仿照上面链接的例子敲了一遍:

下面一一介绍各个类:

首先定义一个接口,代码很简单IShap:

定义两个他的实现类:

园的实现

接着定义一个抽象类,并且继承Ishap,这个是装饰类的抽象类,里面包含一个IShap的属性,:

接着定义装饰类的实现类:

可以看到这个类继承自装饰类,并且实现了draw方法,所以如果我们想在原来的基础上做一些东西的话就很简单了,比如说 添加点红色:

打印结果:

结束了!

其实这个装饰器模式感觉就是在不改变原来东西的基础上,又想添加点东西。

原理啥的不难,就是多了好多代码,实现起来有点复杂

最近发表
标签列表