博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第20条:类层次优于标签类
阅读量:6511 次
发布时间:2019-06-24

本文共 1275 字,大约阅读时间需要 4 分钟。

  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

你可能感兴趣的文章