`

设计模式----装饰者模式(decorator pattern)

 
阅读更多
SchoolReport.java代码如下:
package com.designPattern.decorator;

public abstract class SchoolReport {

	public abstract void report();
	
	public abstract void sign(String name);
}



FouthGradeSchoolReport.java代码如下:
package com.designPattern.decorator;

public class FouthGradeSchoolReport extends SchoolReport{

	@Override
	public void report() {
        System.out.println("========以下是成绩单原装内容!============");		
        System.out.println("+++++++++++++++++++++++++++++++++++");		
        System.out.println("+++++++++++++++++++++++++++++++++++");		
        System.out.println("+++++++++++++++++++++++++++++++++++");		
        System.out.println("+++++++++++++++++++++++++++++++++++");		
        System.out.println("+++++++++++++++++++++++++++++++++++");		
        System.out.println("========以上是成绩单原装内容!============");		
	}

	@Override
	public void sign(String name) {
		System.out.println("家长签名为:" +name);
		
	}

}



Decorator.java代码如下:
package com.designPattern.decorator;

public abstract class Decorator extends SchoolReport{

	private SchoolReport schoolReport;
	
	public Decorator(SchoolReport schoolReport){
		this.schoolReport =schoolReport;
	}
	
	public void report(){
		this.schoolReport.report();
	}
	
	public void sign(String name){
		this.schoolReport.sign(name);
	}
}



HighScoreDecorator.java代码如下:
package com.designPattern.decorator;

public class HighScoreDecorator extends Decorator{

	public HighScoreDecorator(SchoolReport schoolReport) {
		
		super(schoolReport);
	}

	public void reportHighScore(){
		System.out.println("这次语文成绩最高是75,数学是78,自然是80");
	}
	
	public void report(){
		this.reportHighScore();
		super.report();
	}
}



SortDecorator.java代码如下:
package com.designPattern.decorator;

public class SortDecorator extends Decorator{

	public SortDecorator(SchoolReport schoolReport) {
		
		super(schoolReport);
	}
	
	private void reportSort(){
		System.out.println("我排名第38名");
	}

	@Override
	public void report() {
		super.report();
		this.reportSort();
	}

}



Father.java代码如下:
package com.designPattern.decorator;

public class Father {
	
	public static void main(String[] args) {
		
		SchoolReport schoolReport;
		
		schoolReport = new FouthGradeSchoolReport();
		
		schoolReport = new HighScoreDecorator(schoolReport);
		
		schoolReport = new SortDecorator(schoolReport);
		
		schoolReport.report();
		
		schoolReport.sign("one'father");
	}

}



运行结果如下:
这次语文成绩最高是75,数学是78,自然是80
========以下是成绩单原装内容!============
+++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
========以上是成绩单原装内容!============
我排名第38名
家长签名为:one'father

分享到:
评论

相关推荐

    C#设计模式-吕震宇

    C#设计模式(12)-Decorator Pattern C#设计模式(11)-Composite Pattern C#设计模式(10)-Adapter Pattern C#设计模式(9)-Prototype Pattern C#设计模式(8)-Builder Pattern C#设计模式(7)-Singleton...

    design-pattern-java.pdf

    树形结构的处理——组合模式(二) 树形结构的处理——组合模式(三) 树形结构的处理——组合模式(四) 树形结构的处理——组合模式(五) 装饰模式-Decorator Pattern 扩展系统功能——装饰模式(一) 扩展系统...

    设计模式之装饰模式(Decorator Pattern)

    动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。

    Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现

    Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现 VS2012 下通过

    装饰者模式(Decorator Pattern)原理图

    装饰者模式(Decorator Pattern)是一种结构型设计模式,它的定义是在不改变原有对象结构的基础上,动态地给该对象增加一些职责(即增加其额外功能)。这种模式允许向一个现有的对象添加新的功能,同时又不改变其...

    36种最新设计模式整理

    36种最新设计模式整理 Design Pattern: Simple Factory 模式 Design Pattern: Abstract Factory 模式 Design Pattern: Builder 模式 Design Pattern: Factory Method 模式 Design Pattern: Prototype 模式 ...

    C#版 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) ...装饰模式(Decorator Pattern) 状态模式(State Pattern) 组合模式(Composite Pattern)

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    设计模式精解-GoF 23种设计模式解析附C++实现源码 AbstractFactory模式、Adapater模式、Composite模式、Decorator模式、Factory模式、Observer模式、Strategy模式、Template模式

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21...

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...

    C#设计模式.PDF

    C#设计模式(12)-Decorator Pattern 101 一、 装饰(Decorator)模式 101 二、 装饰模式的结构 102 三、 装饰模式示例性代码 103 四、 装饰模式应当在什么情况下使用 106 五、 装饰模式实际应用的例子 106 六、 ...

    CoreJava-DesignPattern

    创意设计模式 -- Abstract Factory - Done -- Builder - Done -- Factory Method -- Object Pool -- Prototype - Done -- Singleton - Done 结构设计模式 -- Adapter -- Bridge -- Composite -- Decorator - Done ...

    33种JAVA设计模式DEMO

    装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of ...

    设计模式PPT

     装饰者模式(Decorator Pattern)  外观模式(Facade Pattern)  享元模式(Flyweight Pattern)  代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种...

    Pattern-Decorator-Java:设计模式工作坊——装饰者模式

    您必须实现装饰器模式,以便可以在运行时添加提到的服务。 作为开发服务如何工作的示例,在运行时创建一个用加密和缓存装饰的 JSON 策略,以及一个带有日志记录的 XML 策略。 请记住,您必须提供源代码和详细说明所...

    C#设计模式_设计模式_C#_

    装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令...

    C#设计模式大全

    C#设计模式(12)-Decorator Pattern 一、 装饰(Decorator)模式 二、 装饰模式的结构 三、 装饰模式示例性代码 四、 装饰模式应当在什么情况下使用 五、 装饰模式实际应用的例子 六、 使用装饰模式的优点和...

    单例模式源码java-DesignPattern:在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在

    在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...

    设计模式装饰者模式

    DecoratorPattern 设计模式

Global site tag (gtag.js) - Google Analytics