C#设计模式解析:装饰模式与工厂方法模式应用

需积分: 10 14 下载量 176 浏览量 更新于2024-08-19 收藏 2.73MB PPT 举报
"装饰模式-C#23种设计模式示例" 装饰模式是一种设计模式,它允许在运行时向对象添加新的行为或职责,而不会改变对象的原始类。装饰模式通常作为继承的替代方案,提供了更大的灵活性。在给定的例子中,通过在照片上写字、购买相框和设计包装盒,你(即"Decorator")逐步增加了礼物的价值和个性化,而这些附加的部分都是对基础照片的装饰。装饰模式的关键在于,所有的装饰者都遵循相同的接口或基类,因此客户端代码可以透明地处理装饰后的对象,就像处理原始对象一样。 装饰模式主要包含以下角色: 1. 抽象组件(Component):定义了被装饰对象的接口,这样任何装饰者和被装饰的对象都可以被当作同一类型来处理。 2. 具体组件(Concrete Component):实现了抽象组件接口的具体对象,也就是原始对象,需要被装饰。 3. 装饰(Decorator):持有对组件对象的引用,并实现抽象组件接口,确保可以和具体组件以相同的方式使用。装饰者可以在调用具体组件方法前后添加新的行为。 4. 具体装饰(Concrete Decorator):实现了装饰接口,添加了具体的装饰行为。 工厂方法模式是另一种设计模式,属于创建型模式。它定义了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化延迟到子类。这使得工厂方法模式能够绕过简单的静态工厂模式中类的单一职责问题,同时提供了更大的灵活性,使得系统可以在不修改已有代码的情况下引入新的产品。 在工厂方法模式中,有以下几个角色: 1. 抽象工厂(Abstract Factory):定义一个创建产品对象的接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体的产品对象。 3. 抽象产品(Abstract Product):定义了产品的接口,工厂方法创建的对象都必须是这个接口的实现。 4. 具体产品(Concrete Product):实现了抽象产品的接口,是工厂方法真正创建的对象。 简单工厂模式是最简单的创建型模式,它提供一个工厂类来创建对象,通常用于类的集合较小且不常改变的情况。与工厂方法模式相比,简单工厂模式的缺点在于工厂类可能变得过于庞大,违反了单一职责原则,且不易于扩展。 这三种模式都是面向对象设计中的重要工具,它们帮助开发者更好地管理和扩展软件系统的结构,以适应变化的需求。在C#这样的面向对象语言中,这些模式的应用可以提高代码的可读性、可维护性和可扩展性。