Java软件设计模式------装饰设计模式

Java软件设计模式一共分为23种;

一般常用的有:

  单例设计模式

  装饰设计模式

  工厂设计模式

装饰设计模式

定义:英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

在生活中我们用程序员和项目经理的例子来比喻,项目经理是从程序员开始的,经过不断地积累工作经验、不断的学习新的知识,才有可能升职。

在装饰设计模式中项目经理就是程序员的增强。

程序猿:
  写程序
项目经理
  调研需求
  写程序
  项目管理

1.新建一个程序员类

/**
* 程序员
* @author Administrator
*/
public class Programmaer {
public void code(){
System.out.println("写代码..");
}
}

2.创建一个项目经理类(项目经理是在程序员基础上增加新的工作方法)

/**
* 项目经理
* @author Administrator
*/
public class ProgramerMannerger {
private Programmaer p;
//构造方法 参数为程序员的引用
public ProgramerMannerger(Programmaer pr){
this.p=pr;
}
//项目经理工作的方法
public void work(){
System.out.println("调研需求");
p.code(); //程序员的方法
System.out.println("项目管理");

}
}

3.创建一个Test类:

/**
* 在程序员基础上加功能,用包装设计模式加功能
* @author Administrator
*/
public class Test2 {
public static void main(String[] args) {
//程序员
Programmaer p=new Programmaer();
//项目经理
ProgramerMannerger pm=new ProgramerMannerger(p);
pm.work();
}
}

结论:当一个程序完成以后,怎样增加功能,又不用大范围的修改代码?就可以使用装饰设计模式。

时间: 2024-12-20 01:04:51

Java软件设计模式------装饰设计模式的相关文章

JAVA设计模式-装饰设计模式-继承体系的由来和装饰类的优化

首先看一下我们设计类的过程: 专门用于读取数据的类 MyReader l--MyTextReader:根据不同的功能会不断延伸很多子类 l--MyMeidaReader l--MyDataReader l--.......... 为了提高以上子类的工作效率,需要加入缓冲区技术.所以又会出现下面的类的继承体系. (体系1) MyReader l--MyTextReader:根据不同的功能会不断延伸很多子类 l--MyBufferedTextReader l--MyMeidaReader l--My

java中的装饰设计模式,浅谈与继承之间的区别

最初接触装饰设计模式,一直搞不懂这么做的意义是什么,看了网上很多的资料,对于与继承的区别并没有很清楚的分析,直到看到这篇博客:http://www.cnblogs.com/rookieFly-tdiitd/p/4914593.html 这篇就很清楚的解释了装饰设计模式与继承之间的区别.下面是我自己的一些理解. 一.概念 装饰模式又称为包装模式,动态地给对象添加功能,是继承关系的一种替代方法. 二.选择 子类通过继承也能增加功能,但是关于装饰模式与继承之间如何选择,请看下面的例子. 假设:煎饼是父

设计模式-装饰设计模式

装饰设计模式:当需要对某些类功能进行增强时,可以把这个类的对象传到自定义类中,然后利用此对象具备的方法在此基础之上进行功能的增强. 与继承的区别:扩展性强一些 代码举例: import java.io.*; class MyBufferedReader { private FileReader fileReader; public MyBufferedReader(FileReader fileReader) { this.fileReader = fileReader; } public St

设计模式之:装饰设计模式

装饰设计模式 装饰设计模式概述 装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类.是继承的替代方案.装饰模式可以任意组合. 优点 使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能 缺点 正因为可以随意组合,所以就可能出现一些不合理的逻辑 装饰设计模式图解: 例子1: public interfacePhone { public abstract void call(); } public classIPhone

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

装饰设计模式 装饰设计模式动态的添加行为和责任向一个对象而不修改他的任何代码.他是你子类化修改类的行为用通过另一个对象的包装的代替方法. 在Objective-c里面有很多这种设计模式的实现,像category和delegation. 类别 类别是一个极其强大的机制允许你向已经知道的类添加方法不用继承.新方法在编译时间被添加可以像正常方法一样被执行在这个扩展类里面.这个和类的修饰定义有稍微的不同.因为类别不能添加实例 变量. 注意:除了扩展自己的类,你还可以向任何cocoa自己的类添加方法. 怎

Java软件设计模式------单例设计模式

Java软件设计模式一共分为23种; 一般常用的有: 单例设计模式 装饰设计模式 工厂设计模式 单例设计模式(以后的用处:spring框架IOC,默认创建的对象都是单例的): 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 单例设计模式分为两种(饿汉式和懒汉式): ①饿汉式(常用): 特

java装饰设计模式的由来

装饰设计模式:基于已经存在的功能,提供增强的功能 装饰设计模式的由来: Reader   ----TextReader  ----MediaReader 要为子类提供缓冲读的功能 Reader   ----TextReader        ----BufferedTextReader   ----MediaReader       -----BufferedMediaReader Reader   ----TextReader        ----BufferedTextReader   -

设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 使用方法

装饰者模式(Decorator Pattern) Java的IO类 使用方法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26716823 装饰者模式(decorator pattern)参见: http://blog.csdn.net/caroline_wendy/article/details/26707033 Java的IO类使用装饰者模式进行扩展, 其中FilterInputStream类, 就是装饰者(decora

java设计模式------装饰着模式

java设计模式-------装饰者模式 装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案.主要有组件(components)和装饰器(Decorator)组成.要求components和Decorator实现相同的接口或者抽象类(具体类的局限性太大). 设计原则.模式特点.适用性 - 1. 多用组合,少用继承. 利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为.然而,如果能够利用