第二十条:类层次由于标签类
来源:互联网 发布:kk棋牌源码 编辑:程序博客网 时间:2024/06/05 12:44
一、什么叫做标签类
标签类指的是:类中由某个或某组常量(这就是标签),控制着这个类的行为。
示例:
public class Figure {//枚举类型enum Shape{SQUARE,CIRCLE};private double radium;private double width;private double height;private Shape type;public Figure(double radium){type = Shape.CIRCLE;this.radium = radium;}public Figure(double width,double height){type = Shape.SQUARE;this.width = width;this.height = height;}public double area(){//需要进行判断返回数据switch (type) {case CIRCLE:return radium*Math.PI*2;case SQUARE:return width*height;default:throw new IllegalArgumentException("未知错误");}}}二、标签类的缺点
①、容易产生数据冗余,就像例子中的area()方法,需要进行类型判断才能返回值,如果数据一多就需要进行大量的判断,整个类的可读性太低。
②、类型不清晰,比如说我用到了这个类的构造方法,我怎么知道我返回的面积是Circle还是Square。
综上,标签类唯一的优点是,能够少创建类。
三、如何改进标签类
标签类,其实就是将类此层结构包装在了一个类中,我们只需要还原它的类层级接口就可以了。
首先:父类:Figure 子类:Square() 、Circle()
①、创建父类
public interface Figure {double area();}②、子类继承父类(Square为例)
public class Square implements Figure {private final double width;private final double height;public Square(double width,double height) {// TODO Auto-generated constructor stubthis.width = width;this.height = height;}@Overridepublic double area() {// TODO Auto-generated method stubreturn width*height;}}使用:
public static void main(String[] args) {// TODO Auto-generated method stubFigure figure = new Square(10, 10);double area = figure.area();}这样最容易体现类层次。
所以标签类是一种很糟糕的编码方式。
0 0
- 第二十条:类层次由于标签类
- 第20条:类层次优于标签
- 第20条:类层次优于标签类
- Effective Java 第 20 条: 类层次优于标签类
- 第20条:类层次优于标签类
- 《Effective java》读书记录-第20条-类层次优于标签类
- 类层次优于标签类
- 类层次优于标签类。
- 第二十五天(简单标签)
- Java学习笔记15:注意类层次,谨防标签类
- (20):类层次优先于标签类
- effective java(20) 之类层次优于标签类
- 第二十天-Java_IO(File类、递归)
- 学习effective java-20类和接口之类层次优于标签类
- MFC类层次
- MATLAB 层次聚类
- 层次聚类算法
- 类的层次结构
- 图像(头像)选择,截取,压缩,上传的分享
- httpClient 处理SSL问题
- 基于深度学习的目标检测新作
- SCP 命令
- 怎么使下拉菜单选项控制Label显示内容
- 第二十条:类层次由于标签类
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- bat知识点2_截取字符串
- Winform非模态对话框
- JSP学习笔记(第2次):Servlet过滤器
- 阿里云搭建的 mysql不能连接到远程或者拒绝访问解决办法
- ProgressBar设置旋转图片
- MySQL 修改字段类型或长度
- 383. Ransom Note