Java中仅用两个点实现Rectangle类的getWidth()方法相关问题
矩形类宽高计算实现方案
前置前提
默认你的_pointSW(西南点)、_pointNE(东北点)为轴对齐矩形的对角坐标点,点实例支持获取x、y坐标属性(可通过.x/.y属性或者getX()/getY()方法访问)。
1 基础getWidth()直接实现
不需要新增任何变量,直接通过两个点的x坐标差值计算即可:
// 示例为Java语法,其他OOP语言逻辑同理 public double getWidth() { // 可选添加Math.abs保证返回宽度为正值,避免点坐标传反的异常 return Math.abs(_pointNE.getX() - _pointSW.getX()); }
2 私有方法封装的优化方案
你提到的私有方法方案完全可行,且复用性、可维护性更好,不会新增公共方法,完全符合你的约束要求,实现逻辑如下:
第一步:定义私有宽高计算方法
这两个方法仅类内部可访问,不会对外暴露,所有计算逻辑实时基于已有两个点变量完成,不需要新增任何存储变量:
// 私有方法:计算宽度 private double calculateWidth() { // 可在此处添加自定义校验逻辑,比如坐标合法性断言 assert _pointNE.getX() >= _pointSW.getX() : "东北点x坐标不能小于西南点x坐标"; return _pointNE.getX() - _pointSW.getX(); } // 私有方法:计算高度,同理实现 private double calculateHeight() { assert _pointNE.getY() >= _pointSW.getY() : "东北点y坐标不能小于西南点y坐标"; return _pointNE.getY() - _pointSW.getY(); }
第二步:公共getWidth()方法直接调用私有方法
public double getWidth() { return calculateWidth(); } // 后续需要高度时也可以直接调用私有方法实现getHeigth() public double getHeight() { return calculateHeight(); }
该方案的优势
- 逻辑复用:后续实现面积、周长计算等其他内部方法时,直接调用私有方法即可,不需要重复编写坐标差计算逻辑
- 易维护:如果后续需要调整计算规则,比如适配特殊坐标系、增加异常兼容逻辑,仅修改私有方法即可,所有调用处自动同步生效
- 完全符合约束:没有新增公共方法,也没有新增任何实例变量,所有计算都是基于现有两个点变量实时完成
内容的提问来源于stack exchange,提问作者Miri
相关产品推荐
相关产品推荐

