从面向对象到java装饰者模式初体验

在写代码之前,首先我要谈一谈面向对象的三种特性,来引入后面的内容。

一 继承
继承是从已知类派生出新的类,是java面向对象最显著的一个特征。其优点是易于实现和扩展。 缺点是打破封装,向子类暴露了实现细节,父类更改之后子类也要同时更改,这样就增加了代码的耦合性。
需要注意的是 Java 不支持多继承,但支持多重继承。

二 封装
封装顾名思义就是(将数据隐藏而提供获得数据的接口)。它就像一道屏障可以起到保护数据的作用。其优点为:
1)减少代码的耦合性。
2)实现细节隐藏信息
3)对成员变量带到更精确的控制
4)类内部的结构可以自由修改

三 多态
多态是一个行为具有不同的表现形式和能力。
多态是同一个接口,使用不同的实例而执行不同操作。
例如
多态存在的三个必要条件

  1. 继承
  2. 重写
  3. 父类引用指向子类对象。

    多态的优点

    1. 简化代码
    2. 可替换性
    3. 可扩充性
    4. 接口性
    5. 灵活性
    6. 消除类型之间的耦合关系

有了这些基础可以让我们更好地理解代码
多的不说,直接上代码

装饰者类
```package com.chauncy.decorator;

import java.io.BufferedReader;

import java.io.IOException;
import java.io.Reader;

/**
 * @author Administrator 装饰者模式 1)继承被装饰者类
 */
public class Decorator extends BufferedReader {

    // 2)在装饰者类中,创建被装饰者类对象
    private BufferedReader bReader;

    // 3)传入被装饰者类对象给装饰者类
    public Decorator(Reader in) {
        super(in);
        bReader = (BufferedReader) in;
    }

    // 加强
    int count = 1;

    @Override
    public String readLine() throws IOException {
        String content = bReader.readLine();
        if (content != null) {
            content = count + "chauncyluo: " + content;
            count++;
        }
        return content;
    }

}





<div class="se-preview-section-delimiter"></div>

这里写代码片
“`

被装饰者类
package com.chauncy.decorator;

import java.io.BufferedReader;

import java.io.FileReader;

public class Demo {

    public static void main(String[] args) throws Exception {
        BufferedReader b = new BufferedReader(new FileReader("h:/1.txt"));

        // 创建装饰者类
        BufferedReader bReader = new Decorator(b);
        String string = null;
        while ((string = bReader.readLine()) != null) {
            System.out.println(string);
        }
        bReader.close();
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值