4_装饰模式
正常的添加功能
如果一个人想要穿衣服,那么代码可以这样
如果客户端想要调用直接使用person方法就可以,但是这违背了开放-封闭原则
我们可以把穿着分开作为一个类
但是我们需要的是经过组装的人而不是空的人同时每个装饰需要调用自己的方式实现装饰,也就是说可以通过衣服来装饰人以此来达到灵活搭配的效果!!!!
因此我们引入装饰模式
装饰模式
-
动态地给一个对象添加一些额外的装饰,就添加功能来说修饰模式比生成子类灵活
componet定义一个对象的接口,可以给这些对象动态的添加职责
concreteComponent是具体的对象可以添加一些职责
Decorator,装饰抽象类,继承了Componet,从外类来扩展Componet的功能,但是对于Componet来说不知道Decorator存在
ConcreteDecoratorB具体的转世对象,用来添加具体的职责
public abstract class Component {
public abstract void Operation();
}
public abstract class Dector extends Component{
protected Component component;
public void SetComponet(Component component){
this.component = component;
}
通过setComponet来层层包装,每一个装饰只关心自己的功能,不需要关系如何被添加到关系链中
如果只有一个concreteComponent类那么就不需要抽象出Componet,Decorator类可以直接继承concreteComponent
因此之前的例子我们可以用一下类来实现
之后如果要添加新的装扮,只需要重新写一个新的装饰类,然后使用setcomponet来嵌套就可以实现功能的累加
总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人