EffectiveJava之19-用类层次代替联合
来源:互联网 发布:php隐藏域 编辑:程序博客网 时间:2024/06/18 04:32
1、 C中的联合体:
typedef enum {RECT , CIRC} shape_type
typedef struct {
double length;
double width;
}rectangleDimensions_t
typedef struct {
double radius;
}circle Dimensions_t
typedef struct {
shape_type tag ;
union {
rectangleDimensions_t rectangle ;
circle Dimensions_t circle ;
}dimensions
} shape_t
double area ( shape_t * pshape_t ){
switch( pshape_t ->tag){
case RECT : {
double length = pshape_t-> dimensions . rectangle .length ;
double width = pshape_t-> dimensions . rectangle .width ;
return l* w ;
}
CaseCIRC : {
double r = pshape_t-> dimensions . circle.radius;
return r*r*Pi;
}
Default: return -1;
把一个可区分的联合变换为一个类层次:
先定义一个抽象类,每个操作定义一个抽象方法,其行为取决去便签的值。
如上例: area 这个首相类的类层次的根(root)。
如果有其他的操作行为不依赖于标签的值,则吧这些操作变成根类中的具体方法。
- EffectiveJava之19-用类层次代替联合
- EffectiveJava(32) -- 用EnumSet代替位域
- EffectiveJava-考虑用静态工厂方法代替构造器
- 层次遍历(用栈代替队列)
- EffectiveJava 第1条 :创建和销毁对象--考虑用静态方法代替构造器
- 静态方法代替构造器-effectiveJava读书笔记
- EffectiveJava之16-★接口优于抽象类
- EffectiveJava之18-优先考虑静态成员类
- EffectiveJava-类和接口
- EffectiveJava
- EffectiveJava
- 一对多联合查询用exist代替distinct的句子
- 一对多联合查询用exist代替distinct的句子
- SQL联合查询优化 用union all来代替union
- SQL联合查询优化 用union all来代替union
- EffectiveJava(31) -- 使用实例域代替Enum的序数排序
- EffectiveJava(33) -- EnumMap详解(使用EnumMap代替序数)
- EffectiveJava之13-支持非可变性
- 容器 知识点总结
- Java实现遍历文件夹
- Struts2源码中所列 常量Constant配置清单
- ArcGIS 中使用 zoomToEnvelope 不能完整显示区域问题的解决办法
- 自己学驱动7——uboot代码阅读二(start.S)
- EffectiveJava之19-用类层次代替联合
- 第13周项目6-体验文件操作(2-热身)
- Drawable 的 子类
- CentOS7系统KDE4下使用HDMI输出音频
- Ubuntu+Eclipse+CDT+OpenCV安装和配置
- Python正则表达式指南
- EffectiveJava之10-谨慎改写clone
- 王珞丹白百何赵丽颖 小花旦上位有幕后推手
- CSS中的浮动与定位