Java装饰模式
装饰模式:给一个类添加一些额外的职责,并且在添加这些额外的职责时不会控制该类的执行逻辑。
UML类图:
组成部分:
抽象构件:原始的功能接口
具体构件:具体的原始功能类
装饰角色:持有具体构件类的对象,以便执行原有功能
具体装饰:具体扩展的功能在这里
下面看一个对开车功能拓展的实例(晚上+开车):
抽象构件:
package com.gjy.drector;
/**
* 抽象接口,规范准备接收附加责任的对象
* @author gjy
*/
public interface Component {
public void operation();
}
具体构件:
package com.gjy.drector;
/**
* 接收附加责任, 此类型的类可以有多个, 只对应一个Decorator类
* @author gjy
*/
public class ConcreteComponent implements Component {
public ConcreteComponent(){}
public void operation()
{
System.out.println("开车");
}
}
装饰角色:
package com.gjy.drector;
/**
* 装饰角色,持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口
* @author gjy
*/
public class Decorator implements Component {
private Component component;
public Decorator(){}
public Decorator(Component component)
{
this.component = component;
}
public void operation() {
component.operation();
}
}
具体装饰:
package com.gjy.drector;
/**
* 添加附加责任
* @author gjy
*/
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(){}
public ConcreteDecorator(Component component)
{
super(component);
}
public void operation()
{
this.addedOperation();
super.operation();
}
public void addedOperation()
{
System.out.println("晚上");
}
}
测试:
package com.gjy.drector;
/**
* 客户端类
* @author gjy
*/
public class Client {
public static void main(String[] args) {
Component component = new ConcreteComponent();
Decorator decorator = new ConcreteDecorator(component);
//客户端不变, 但已增加了责任
decorator.operation();
}
}
输出结果:
晚上
开车
分享到:
相关推荐
### Java装饰模式详解 #### 一、装饰模式概述 装饰模式是一种结构型设计模式,它允许向对象添加新的功能,而无需修改其原有结构。这种模式通过创建包含其他对象的对象来扩展功能,使得可以在不破坏封装性的前提下...
在Java中,装饰模式通常通过继承和组合来实现,它为对象提供了增加新功能的方式,同时保持了对象的接口不变。这种方式使得我们可以动态地给一个对象添加一些额外的职责,而不会影响到其他对象。 装饰模式的核心思想...
装饰模式和动态代理模式是Java编程中两种非常重要的设计模式,它们都在代码的扩展性和灵活性方面发挥着关键作用。下面将分别对这两种模式进行详细解释,并结合手写的数据库连接池和动态代理模式的使用进行深入探讨。...
Java中的装饰模式通常涉及到继承和组合的使用。 在给定的资料中,我们可以看到以下几个关键的文件: 1. `Compoent.java`:这是组件接口或抽象类,定义了装饰模式的基本行为。所有具体组件(ConcreteCompoent)和...
在Java中,装饰模式的核心在于抽象组件(Component)接口、具体组件(Concrete Component)类、抽象装饰(Decorator)类以及具体装饰(Concrete Decorator)类。首先,我们定义一个抽象组件接口,它定义了所有组件...
通过设计组装和升级大众CC来说明装饰模式,有一个VolkCC类实现Volk接口,设计一个CCDecorator实现Volk这个接口,在ConcreteCCDecorator这个具体装饰角色中进行功能的增加和重写。
装饰模式是一种设计模式,它允许在不改变对象自身的情况下,动态地给对象添加新的行为或职责。这种模式常用于在不修改源代码的情况下扩展对象的功能,或者为对象提供额外的职责。在本例中,"项目经理接到一个项目,...
在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。下面将详细讲解装饰者模式的核心概念、工作原理以及如何在Java中应用。 ### 一、装饰者模式的基本概念 1. **...
在Java中,装饰模式通常通过继承和组合来实现,提供了比子类化更灵活的方式来扩展对象的功能。 装饰模式的核心概念包括以下几个部分: 1. 抽象组件(Component):定义一个接口,所有目标对象和装饰对象都要实现这...
装饰模式是一种设计模式,属于结构型模式,其主要目的是在不改变对象本身的基础上,通过向对象添加新的行为或属性来扩展其功能。这种模式遵循“开闭原则”,即对扩展开放,对修改关闭。 在装饰模式中,有四个关键...
【Java 装饰模式详解】 装饰模式(Decorator Pattern)是一种结构型设计模式,它可以在不修改原有对象的基础上,通过添加新的职责来扩展对象的功能。装饰模式的核心在于它定义了一个与原类一致的接口,使得装饰类和...
Java装饰模式,也被称为Decorator模式,是一种设计模式,它允许在运行时向对象添加新的行为或职责,而不必通过继承的方式来扩展类。这种模式提供了一种比使用子类更加灵活的方式来扩展对象的功能。 装饰模式的核心...
【Java装饰模式(Decorator Pattern)】装饰模式是一种结构型设计模式,它允许在不修改已有对象的基础上,通过添加额外的功能来扩展对象的行为。这种模式的关键在于装饰类与被装饰类有相同的接口,使得它们可以互换...
2. **动态性**:装饰模式允许我们在运行时动态地为对象添加新功能,而无需修改代码。 3. **组合性**:通过多个装饰者的叠加,可以实现更复杂的功能,这比使用继承来扩展功能更加灵活。 4. **职责分离**:装饰者模式...
Java IO 与 装饰模式 在Java编程中,输入输出(IO)处理是程序设计中的重要组成部分,用于读取、写入和处理数据。Java IO库提供了一整套类来支持各种类型的输入输出操作,包括文件、网络、内存等。而装饰模式是一种...
在Java中,装饰者模式通常涉及到继承和接口的使用。装饰者模式的核心思想是,定义一个抽象组件接口(Component),然后创建一个实现了这个接口的类(ConcreteComponent)。接着,创建一个抽象装饰者接口(Decorator...
本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。为什么呢?一旦你熟悉了装饰者的技巧...——《Head First 设计模式》
装饰模式是一种设计模式,它允许我们在不修改原有对象的基础上,通过添加新的行为或属性来扩展对象的功能。在"装饰模式小猪快跑游戏模拟"这个实例中,我们看到这种模式被巧妙地应用到了一个名为“小猪吃苹果”的游戏...
装饰模式(Decorator Pattern)是Java设计模式中的一种结构型模式,它允许在运行时动态地向对象添加新的行为或职责,而不会破坏封装性。这种模式可以用来将多个功能组合在一起,同时保持类的可扩展性和灵活性。在...
- 装饰模式:动态地给对象添加一些额外的职责,比继承更加灵活。 - 外观模式:为复杂的子系统提供一个简单的接口。 - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 - 模板方法模式:定义一个操作...