【JAVA笔记——道】Hadoop设计模式--抽象类

原创 2015年11月20日 17:45:00

Hadoop设计模式–抽象类

在过去我们进行类的衍生中,使用的比较多的是接口。
接口的自由性和拓展性都是接口的比较重要的优势,因为耦合性的关系,我们都在尽量避免继承,但无可否认,抽象类在一定情况下同样拥有良好的使用效果。正如《JAVA编程思想》所述,每一个JAVA的特性都会拥有用武之地。

抽象层 重载

在抽象层进行类的重载可以有效减少在实现层进行重载的代码量,特别是对于抽象层延展比较多的代码。以下Demon截取自Hadoop HDFS FileSystem

public abstract class FileSystem extends Configured implements Closeable {

    public abstract FSDataOutputStream create(Path f,   //提取抽象方法,完整参数列表
        FsPermission permission,
        boolean overwrite,
        int bufferSize,
        short replication,
        long blockSize,
        Progressable progress) throws IOException;

    public FSDataOutputStream create(Path f,            //重载,调用抽象方法
                                    boolean overwrite,
                                    int bufferSize,
                                    short replication,
                                    long blockSize,
                                    Progressable progress
                                    ) throws IOException {
        return this.create(f, FsPermission.getDefault(),
                            overwrite, bufferSize, replication, 
                            blockSize, progress);
    }

    public FSDataOutputStream create(Path f,            ////重载,调用
                                boolean overwrite,
                                int bufferSize,
                                short replication,
                                long blockSize
                                ) throws IOException {
        return create(f, overwrite, bufferSize, replication, blockSize, null);
    }

FileSystem下属子类应用于不同环境下的FileSystem
这里写图片描述
但对于Create方法FileSystem所有子类只需要实现在所属环境下的create完整参数方法,而不需要对create方法进行重载。
截取DistributeFileSystem

Public class DistributeFileSystem extends FileSystem {          //子类只需要实现抽象方法
    public FSDataOutputStream create(Path f, FsPermission permission,
                                    boolean overwrite,
                                    int bufferSize, short replication, long blockSize,
                                    Progressable progress) throws IOException {

        statistics.incrementWriteOps(1);
        return new FSDataOutputStream
                (dfs.create(getPathName(f), permission,
                overwrite, true, replication, blockSize, progress, bufferSize),
                statistics);
    }
}
版权声明:转载请注明出处,欢迎各位斧正

相关文章推荐

Hadoop架构介绍——Hadoop的三种运行模式

三种模式 单机模式 伪分布式模式 完全分布式模式 单机模式 1.默认模式 2.不对配置文件进行修改 3.使用本地文件系统 4.Hadoop不会启动NameNode、DataNode、JobTrac...

yarn(hadoop2)框架的一些软件设计模式

一、概述 我们都知道,yarn版本的hadoop无论是从架构上面还是软件设计的层面上面都比原始的hadoop版本有较大的改进。在架构方面,我们认为yarn模式是新一代的框架,这个在官方等丛多的资料中...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

java设计模式-单例模式

java设计模式-单例设计模式

mysql数据库千万级别数据的查询优化和分页测试

本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处 http://blog.sina.com.cn/s/blog_438308750100im0b.html 有什么问题...

中断的禁止和使能以及处理例程

【中断处理例程】 中断处理器例程即中断处理函数,其作用是根据被服务的中断的含义进行适当的操作,通常是读、写数据。中断处理例程与普通C函数没有什么差别,但是中断处理装置有以下限制: 中断处理装置不能...
  • LDan508
  • LDan508
  • 2016年01月19日 15:36
  • 1215

java笔记-面向对象-继承、抽象类、模版设计模式

面向对象:继承 /* ** 继承: ** 将对象与对象的共性描述抽取出来,单独进行描述,在子类中使用extends关键字; ** 优点:提高了代码的复用性; ** 让类与类之间产生了关系,有...
  • Cs1275
  • Cs1275
  • 2014年07月24日 08:39
  • 547

Java基础——继承+子父类相关特点+Final关键字+抽象类+模板方法设计模式+接口

一、      面向对象(继承) 概述: Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,就无需再定义这些属性和行为,并能扩展新的能力...

2.java设计模式接口型模式(读书笔记)(讲解接口和抽象类)

1.一个是类一个是接口(意思就是一个类只能继承一个抽象类,但是可以实现多个接口) 2.抽象类里可以有具体的方法,但是接口里的方法都是抽象的。 3.抽象类可以声明和使用字段,但是接口中不能,只能使用...

【读书笔记】设计模式_接口与抽象类

客户对象:一个请求其他对象的服务的对象称为客户对象。对象A调用了对象B的方法,称A为客户对象。 定义一个计算员工薪水的接口,由于有不同的员工,若将计算方法都放在员工类的内部,不利于代码的维护。 pub...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【JAVA笔记——道】Hadoop设计模式--抽象类
举报原因:
原因补充:

(最多只允许输入30个字)