装饰模式有感

设计模式其实是提供解决问题的一种思路,而且很抽象,所以一直想用一种形象的思维来理解它。
装饰模式,官方的解释在此不说。它的核心四个角色:抽象构件角色,具体构件角色,抽象装饰角色,具体装饰角色。可以作以下理解:
有一个人要出门,需要搭配衣服,包括上衣,裤子等,这个需求出现,应该怎么分解这个功能需求。
1.抽象构件:有一个人物,不知是谁
2.具体抽象构件:这个人可能是张三,可能是李四
3.抽象装饰:只针对这个人,帮他建立了一个装饰格
4.具体装饰:上衣,裤子


Screenshot from 2018-09-28 15:50:26.png

a. 装饰模式的核心,就是那个装饰格,它建立了装饰和人物的关联,例如只要把上衣往装饰格一扔,人物就会穿上。
b. 同时,上衣或裤子只对装饰格负责,而张三或李四也只对人物负责。实现了具体装饰品和具体人物的解耦。
c. 装饰品不必知道谁要用它,张三也不必先和某件上衣产生关联。
d. 这样理解后,再去理解装饰格是如何和人物发生关联。

所以,装饰模式不是用来处理一个人的穿着(个人现有衣服,可能10件)问题,而是用来处理一千个人的穿着(千人现有衣服,可能10000件)问题的思维模式。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,810评论 0 14
  • 【学习难度:★★★☆☆,使用频率:★★★☆☆】直接出处:装饰模式梳理和学习:https://github.com/...
    BruceOuyang阅读 759评论 2 2
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,003评论 1 15
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,872评论 18 399
  • 今晚的雪博士产品示范练习,让我感觉呢,手到心到脑到是多么的重要。第一次的练习,让我感到手忙脚乱。感觉到了自己的差距...
    居东中医养生阅读 593评论 0 1