![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
进击的菜狗子
每天走一步
展开
-
组合模式
组合模式当一个对象具有整体与部分的联系时,可以使用组合模式什么是整体与部分的联系?例如文件跟文件夹,文件夹本身也可以看做是一个文件,其也具有文件名等文件所具有的属性,整体操作跟文件差不多,所以可以把文件夹跟文件看做是同一种东西,但是文件夹下又包含文件,这个文件夹是整体,文件则是部分。下面是结构图:可以看到File类跟Folder的方法都是一样的,但是file类是不支持addFile()这...原创 2018-12-15 23:25:24 · 245 阅读 · 0 评论 -
迭代器模式
迭代器模式说起迭代器,我们会比较熟悉,Iterator,出现在聚合里,提供了访问聚合中包含的对象的功能,迭代器提供了一系列相同的方法,比如hasnext()、next()等等,我们利用迭代器对聚合进行访问时,不需要知道聚合中如何存储存储一系列对象,我们只需要操作迭代器来进行访问。迭代器模式把访问聚合对象的功能抽取出来,如何访问对象由迭代器自己实现,使聚合对其包含对象的访问中解耦出来。下面是结...原创 2018-12-16 23:07:40 · 236 阅读 · 0 评论 -
装饰者模式 跟 适配器模式
装饰者模式装饰者模式,为原对象增加功能时使用,装饰者模式是针对接口实现的,下面是装饰者模式的结构图。针对Compoment这个接口进行实现,ClassA跟Decorator都实现Compoment这个接口,确保覆写func()方法,装饰者本身是不提供功能的,它只是对原有功能的追加,所以装饰者必须要持有原有的对象,也就是持有Compoment的具体实现,这里ClassA就是具体实现。上图看到...原创 2018-12-10 22:11:16 · 243 阅读 · 0 评论 -
状态模式
状态模式在编程中,可能会遇到需要进行状态转变的代码,通常我们是定义一堆常量来定义各个状态,通过一个变量来记住当前的状态,但是这样做的话每次操作都得进行一堆的if-else判断,状态一多,代码就很复杂,维护起来也不好维护。这个时候就可以用到状态模式,它把各个状态都用类来表示,状态的动作以及转换交由各个状态自己来维护,这样就不必在主对象中写一堆if-else语句,各个状态分工也很明确。下面是结构图...原创 2018-12-17 23:43:26 · 272 阅读 · 0 评论