设计模式-装饰设计模式

装饰设计模式:当需要对某些类功能进行增强时,可以把这个类的对象传到自定义类中,然后利用此对象具备的方法在此基础之上进行功能的增强。

与继承的区别:扩展性强一些

代码举例:

import java.io.*;

class MyBufferedReader
{
    private FileReader fileReader;

    public MyBufferedReader(FileReader fileReader)
    {
        this.fileReader = fileReader;
    }

    public String MyReadLine()throws IOException
    {
        StringBuilder sb = new StringBuilder();

        int readNum = 0;
        while((readNum = fileReader.read()) != -1)
        {
            char readChar = (char)readNum;
            if(readChar ==‘\n‘ || readChar == ‘\r‘)
                return sb.toString();
            else
                sb.append(readChar);
        }

        return null;
    }
}
时间: 2024-08-12 20:04:28

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

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

Java软件设计模式一共分为23种; 一般常用的有: 单例设计模式 装饰设计模式 工厂设计模式 装饰设计模式 定义:英文叫Decorator Pattern,又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 在生活中我们用程序员和项目经理的例子来比喻,项目经理是从程序员开始的,经过不断地积累工作经验.不断的学习新的知识,才有可能升职. 在装饰设计模式中项目经理就是程序员的增强. 程序猿: 写程序 项目

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

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

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

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

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

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

使用装饰设计模式加密数据

使用装饰设计模式加密数据: package com.zs.JiaJiE09; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; /** * 使用装饰设计模式把数据取反进行加密解密 * Key方法为钥匙 * * @author LZG * */ public class JMOutputStream extends OutputStream{ /** * 更多资料欢迎浏

装饰设计模式

装饰设计模式概述 装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类,是继承的替代方案 优点 使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能 缺点 正因为可以随意组合,所以就可能出现一些不合理的逻辑 public class Test { public static void main(String[] args) throws Exception { Phone p = new IPhone(); p.cal

Java:装饰设计模式

装饰设计模式: 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能, 并提供加强功能,那么自定义的该类就称为装饰类. 装饰类通常通过构造方法接收被装饰的对象,并基于被装饰的对象的功能,提供更强的 功能. //例子1: class Person { public void chifan() { System.out.println("吃饭"); } } class SuperPerson { private Person p; public SuperPerso

java装饰设计模式的由来

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

【笔记】设计模式——装饰者模式

实现一个类似QQavator功能的代码 1.原始实现 1 //存在的问题: 2 //1.wear*方法出现重复代码,可以重构:实质上为代码结构一致,输出内容相同,可以通过在定义一个基类,在基类中定义抽象的Wear*,在子类中重写: 3 //2.倘若需求中新增某种服饰,需要修改Person类代码,不符合开放--封闭原则: 4 //3.客户端中代码暴露了具体装饰细节,理想情况下只需要提供装饰顺序,装饰细节封装起来: 5 class Person 6 { 7 private string name;