设计模式之装饰设计模式(一)类别

C++设计模式系列文章汇总 Jungle整理的C++设计模式系列文章出炉了,每一种设计模式都包含: 理论知识:每一种模式的定义、解释 模式UML结构和角色分析:UML类图说明模式的角色和结构 模式应用实例:将设计模式应用于具体的例子,并给出UML实例类图 完整的源代码:完整的代码和运行结果示意图,源代码资源及UML图可在Git上下载 总结:每一种模式的特点和适用环境 设计模式准备工作 设计模式(一)——设计... 阅读详情

在之前的讲课中,我为大家提到了MVC设计模式,并简要的讲解了单利设计模式 我们知道了拥有设计模式的程序往往有更好的逻辑性,可读性,今天为大家带来的是装饰设计模式。


装饰器(Decorator)模式
 
装饰器模式在不修改原来代码的情况下动态的给对象增加新的行为和职责,它通过一个对象包装被装饰对象的方法来修改类的行为,这种方法可以做为子类化的一种替代方法。
在Objective-C中,存在两种非常常见的实现:Category(类别)和Delegation(委托)。
今天为大家带来的是  category(类别)
通过类别的方式,我们可以将类的实现分散到不同的文件里。
类别主要有3个作用:
       (1)将类的实现分散到多个不同文件或多个不同框架中。
       (2)创建对私有方法的前向引用。
       (3)向对象添加非正式协议。
我们在工程中会经常的使用到类别, 比如说 创建只在一个类中创建私有的方法,
@interface MyClass : NSObject
- (float)value;
@end
 
 
@interface MyClass () { //注意此处:扩展
    float value;
}
- (void)setValue:(float)newValue;
@end
 
@implementation MyClass
 
- (float)value {
    return value;
}
 
- (void)setValue:(float)newValue {
    value = newValue;
}
 
@end

我们推荐在自定义类的.m文件中使用扩展,这样就能保证良好的代码封装性,避免把私有接口暴露给外面。从而达到了封装私有方法的目的。

 再者,对第一条 利用类别分散实现

举例代码:
头文件CatagoryThing.h包含类的声明和一些类别,导入Foundation框架,然后带有3个整型变量的声明

#import<Foundation/Foundation.h>
@interface CategoryThing : NSObject {
   int thing1;
   int thing2;
   int thing3;
}
@end // CategoryThing



类声明之后是3个类别,每个类别具有一个实例变量的访问器,将这些实现分散到不同的文件中
  @interface CategoryThing(Thing1)
- (void) setThing1: (int) thing1;
- (int) thing1;
@end // CategoryThing (Thing1)

@interface CategoryThing (Thing2)
- (void) setThing2: (int) thing2;
- (int) thing2;
@end // CategoryThing (Thing2)

@interface CategoryThing (Thing3)
- (void) setThing3: (int) thing3;
- (int) thing3;
@end // CategoryThing (Thing3)
类别可以访问其继承的类的实例变量,类别的方法具有最高的优先级
类别可以分散到不同文件中,甚至不同框架中

如有疑问,随时提出
王亦梁

SAN实验全解析:从存储网络选型到容灾快照演练 存储区域网络(SAN)是企业级数据存储的基础架构,通过FC或iSCSI协议实现服务器与存储设备的高速连接。其核心技术包括Zoning隔离、LUN映射、多路径聚合与快照复制,用于保障数据安全、系统高可用和业务连续性。在虚拟化、数据库及容灾场景中,SAN凭借集中化存储管理和灵活扩展能力成为关键支撑。快照与远程复制则是应对逻辑故障与物理故障的核心手段,直接影响RPO与恢复效率。本文基于一项SAN实验,涵盖FC-SAN与IP-SAN选型、WWN与IQN标识、Zoning与LUN Masking配置、多路径设置及容灾 阅读详情

相关推荐

UFS电源管理实战:如何优化手机存储的功耗与性能(附实测数据)

本文深入探讨了UFS电源管理的实战优化策略,旨在平衡手机存储的功耗与性能。通过解析UFS核心电压域与工作状态,重点介绍了通过动态调整bActiveICCLevel(活动电流等级)来实现精细控制,并结合实测数据与场景驱动的智能策略,为Android系统与硬件工程师提供了降低功耗、提升流畅度的有效方法。

weixin_29214559的博客 504

IOS设计模式第四篇之装饰设计模式的类别设计模式

IOS设计模式第四篇之装饰设计模式的类别设计模式

sammyieveo的专栏 755

Mellanox CX7网卡搭配400G光模块实战:从选型到部署的完整指南

本文详细解析了Mellanox CX7网卡与400G光模块的选型策略与部署实践,涵盖硬件对比、兼容性验证及性能调优。重点介绍了OSFP光模块的选择要点和常见问题排查方法,帮助用户构建高性能网络基础设施,适用于AI训练、金融交易等场景。

efc1234567的博客 1290

装饰器设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 1.简介 2.什么是装饰器设计模式 3.实施装饰器设计模式 4.何时使用装饰设计模式 5. Java中的装饰器设计模式 6.下...

最佳 Java 编程 501

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 556

基于Dify实现对Excel的数据分析

在dify部署完成后,大家就可以基于此进行各种应用场景建设,目前dify支持聊天助手(包括对话工作流)、工作流、agent等模式的场景建设,我们在日常工作中经常会遇到各种各样的数据清洗、格式转换处理、数据统计成图等数据分析工作,本次主要基于对话工作流模式对Excel文件、csv文件进行解析处理,并进行成图等数据分析工作。主要用到的插件有LLM节点,文档提取器、参数提取器、自定义代码节点、echart插件等。实现解析Excel数据,经过上述不同节点的处理分析流程,最终实现数据统计图展示。

hhue2007的专栏 1万+

三天肝完设计模式的面试题,面试再不怕设计模式的问题了

设计模式是面试的重头戏,面试必考必问。 前面已经写了设计的模式的快速的学习路线: 设计模式面试大全+视频教学,两天掌握设计模式!!!吊打面试官,offer拿到手疼 往期经典推荐: 1,50个开源项目大全 2,简历怎么写?干货来了!!!看完这篇大大提高你简历通过的概率 3,Mysql面试大全,看完可以吊打面试官!!! 4,我肝了一周,Java从基础到项目教程,Java全栈学习路线,帮你省去培训机构的2万块钱。 5,来自付费粉丝的问题,小孟保姆式解答 目录Q1:设计模式有哪些原则?Q2:设计模式的分类,你知道

程序员springmeng 2599

【WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

AI人人懂 593

设计模式(一):三大类别和六大原则

一、三大类别设计模式分为三大类:创建型模式:对对象的实例化过程进行抽象,这使得一个系统可以不用关心这些对象是如何创建,组合,呈现的,对于类创建模式来说通过使用继承改变实例化的类,对于对象创建模式来说通过使用代理来实例化所需要的对象。共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式:通过对多个类和对象进行组合得到复杂结构的类,一般使用继承或者成员变量引用形式来实现。共七...

水滴的博客 7623

第133章 PCL OrientedBoundingBox 有向包围盒

中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。

yumeiguo的博客 263

麒麟操作系统提示“默认密钥环已上锁”的解决办法

麒麟操作系统提示“默认密钥环已上锁”的解决办法

太极淘的博客 1万+

设计模式 - DesignPattern

1.设计模式的分类?     设计模式分为三大类:     创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。     结构型模式,共七种:适配器模式,装饰模式,代理模式,外观模式,桥接模式,组合模式,享元模式。     行为型模式,共十一种:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命名模式,                            ...

lanhai_scut的博客 365

LLM制造业最佳实践:基于大语言模型处理最优化问题,制造业如何更优排产,提升资源利用率

随着制造业数字化转型加速,生产排产优化成为提升企业效率和竞争力的关键环节。大语言模型(LLM)凭借其强大的多模态数据处理、动态优化和智能推理能力,在复杂排产场景中展现出独特优势。谷歌、DeepSeek等机构的研究表明,LLM可通过自然语言交互和生成式决策,突破传统优化算法的局限性。本报告结合半导体行业实践案例与技术路径,系统分析LLM在排产优化中的应用潜力与挑战。

shiter编写程序的艺术 939

设计模式的Java 8 Lambda表达式–装饰器设计模式

Decorator模式(也称为Wrapper )允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为。 可以将其视为子类的替代方法。 我们知道子类在编译时会增加行为,并且更改会影响原始类的所有实例。 另一方面,装饰可以在运行时为选择性对象提供新的行为。 装饰器与其装饰的组件的接口一致,从而对组件的客户端透明。 装饰器将请求转发到组件,并且可以在转发之前或之后执行其他操作...

最佳 Java 编程 384

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java设计模式——装饰器模式

简要叙述java设计模式装饰器模式,并进行代码的示例

tang_seven的博客 4925

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《HeadFirst设计模式》第三章-装饰者模式

1.声明 设计模式中的设计思想、图片和部分代码参考自《Head First设计模式》,作者Eric Freeman & Elisabeth Freeman & Kathy Siezza & Bert Bates。 在这里我只是对这本书进行学习阅读,并向大家分享一些心得体会。 2.装饰者模式的定义 装饰者模式指的是尽量不使用继承,且不必改变原类文件,就能够动态地扩展一...

qq_32293345的博客 385

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

设计模式练习(9)——装饰模式

装饰模式 一、题目:简单的手机(SimplePhone)在接收到来电的时候,会发出声音来提醒主人,而现在我们需要为该手机添加一项功能,在接收来电的时候,除了有声音,还能产生震动(JarPhone),还可以得到更加高级的手机(ComplexPhone),来电时,它不仅能够发生,产生震动,而且有灯光闪烁提示,使用装饰模式来模拟手机功能的升级过程,要求绘制类图形编程模拟实现。 (1)给出装饰模式等结构视

秘密基地 6996

Nest.js中的设计模式——装饰器

背景 Nest是围绕一种称为装饰器的语言特性构建的。 装饰器风格的实现 Nest在面向对象设计中用到了装饰器模式去组织代码。 装饰器模式是一种动态地往一个类别中添加新的行为的设计模式 在写项目的时候,可以说处处都是围绕着装饰器模式去进行定义的。 例如将一个类定义为一个controller,并将方法暴露为Get请求的方法是像下面这样处理: import { Controller, Get } from '@nestjs/common'; @Controller('cats') export class

pascal_lin 2049

C++设计模式详解之装饰者模式解析

装饰者模式的概念 装饰者模式指的是动态的将责任附加到对象上,想要扩展其功能,装饰者提供有别于继承的另一种选择。(参考《Head First 设计模式》) 个人理解:装饰者就是一种类包类 就是在构造函数里面,添加类作为参数。 装饰者模式原则 封装变化 多用组合,少用继承 针对接口编程,不针对实质编程 为交互对象的松耦合设计而努力 对扩展开放,对修改关闭 装饰者模式实例 例如男生和女生可以被认为...

MusicMan 359

设计模式(六)装饰模式

定义: 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式有以下4个角色。 ■ 抽象构件(Component)角色:该角色用于规范需要装饰的对象(原始对象)。 ■ 具体构件(Concrete Component)角色:该角色实现抽象构件接口,定义一个需要装饰的原始类。 ■ 装饰(Decorator)角色:该角色持有一个构件对象的实例,并定义一个与抽象...

Aero's WorkSpace. 257

计算机基础(一)——设计模式

设计模式(Design Patterns)是软件开发中反复出现问题的解决方案的通用描述。它是经过总结、提炼的高效代码结构和设计方案,帮助开发者写出更灵活、可维护和可扩展的代码。

weixin_45857378的博客 1086

Kotlin设计模式实现之装饰者模式(Decorator)

前言 今天是2020年的第一天,在这里祝大家元旦快乐!之前用kotlin实现了策略模式,文中写到要多写几篇文章来加深以下对设计模式的理解。那么今天要写的看题目应该就知道了:装饰者模式(也叫装饰模式)。下面是装饰者模式的定义: 装饰者模式(Decorator):在不改变对象自身的基础上,动态地给一个对象添加一些额外的职责。与继承相比,装饰者是一种更轻便灵活的做法。若要扩展功能,装...

Zhujiang 1352

设计模式:装饰模式

一、引 面向对象编程就是一个不断的抽象的过程,经过前面几个模式和原则的认识,相信会对面向对象有了进一步的理解,在编写代码中我会需要时刻提醒自己对需求进行合理的抽象。不同的模式是为了解决不同的情况,但终究是依靠面向对象编程中的几个特性封装、继承、多态,都是为了达到可维护、可扩展、可复用、灵活性好,而这一次将要提到的装饰模式(Decorator),就是针对需要不断在已有的功能职责中添加新的职责的情况...

BoCong-Deng的博客 948
上一篇: 聊聊iOS的那些小动画
下一篇: 周末了,给iOS开发的孩子们的鸡汤——阿飞
xiyouiOS
博客等级 码龄11年 4粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值