当前位置: 首页 > news >正文

第20条:类层次优于标签类

为什么80%的码农都做不了架构师?>>>   hot3.png

1.标签类

标签类是指在类中定义了一个变量,使用该变量的值来控制该做什么动作。

2.标签类(不推荐)

能够表示圆形或矩形的类:

public class Figure {
    enum Shape {RECTANGLE, CIRCLE};

    final Shape shape;

    double length;
    double width;

    double radius;

    Figure(double radius) {
        shape = Shape.CIRCLE;
        this.radius = radius;
    }

    Figure(double length, double width) {
        shape = Shape.RECTANGLE;
        this.length = length;
        this.width = width;
    }

    double area() {
        switch (shape) {
            case RECTANGLE:
                return length * width;
                break;
            case CIRCLE:
                return Math.PI * (radius * radius);
                break;
            default:
                throw new AssertionError();
        }
    }
}

标签类过于冗长、容易出错,并且效率低下。

3.类层次(推荐)

abstract class Figure {
    abstract double area();
}

class Circle extends Figure {
    final double radius;

    Circle(double radius) {
        this.radius = radius;
    }

    double area() {
        return Math.PI * (radius * radius);
    }
}

class Rectangle extends Figure {
    final double length;
    final double width;

    Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    double area() {
        return length * width;
    }
}

转载于:https://my.oschina.net/jtzen9/blog/1526518

相关文章:

  • css属性的继承、初识值、计算值、当前值、应用值
  • redis以及php的redis扩展安装部署
  • Gartner表示安全分析可能是安全风险检测的关键
  • 掌众金融:业务主体变更掌众金服
  • 营造平安 信息化使公交事业更加人性化
  • 减少二次开发成本 无缝融入当前流程
  • 前瞻WCTF世界黑客大师赛10大看点
  • VMware在VMworld大会将会推出什么新东西?
  • 梭子鱼公布“三管齐下”战略
  • 企业客户应该对安全厂商提出的三个问题
  • IT运营是IT运维的下一个出口?
  • 南方周末:阿里巴巴的大数据梦
  • java异常—检查异常(checked exception)和未检查异常(unchecked exception)
  • 《影响中国大数据产业进程100人》张华平:如何应用网络搜索挖掘内容价值
  • Linux文件的三个时间属性(Atime,Mtime,Ctime)
  • 30天自制操作系统-2
  • CSS 专业技巧
  • laravel with 查询列表限制条数
  • PHP 7 修改了什么呢 -- 2
  • Phpstorm怎样批量删除空行?
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • ReactNativeweexDeviceOne对比
  • SpringCloud集成分布式事务LCN (一)
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于游标的分页接口实现
  • 技术发展面试
  • 聊聊flink的BlobWriter
  • 前端面试之闭包
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • Java数据解析之JSON
  • scrapy中间件源码分析及常用中间件大全
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (+4)2.2UML建模图
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C语言)共用体union的用法举例
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)shell调试方法
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET : 在VS2008中计算代码度量值
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net和jar包windows服务部署
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net项目IIS、VS 附加进程调试
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @EnableAsync和@Async开始异步任务支持
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [1127]图形打印 sdutOJ
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [2544]最短路 (两种算法)(HDU)