数据结构被定义为仅用于保存数据的特殊类,即纯模型,例如汽车,孩子,动物,事件,员工,公司,客户...等。这些数据通常在其他类的开头声明或视为实例变量。
此类的方法不应执行任何实际的重要工作,否则数据结构类不再是数据结构!
因此,主要是方法是获取器和设置器(即访问器和更改器),通常是因为实例变量被视为私有变量。还有另一种观点:数据结构变量应该是公共的,可以直接从类的实例访问,但是私有变量的概念更好是有争议的。
在这种情况下,数据结构类显示或公开其数据(变量),并且没有有意义(重要)的方法或功能。
诸如MainActivity,ListAdapter,Calculator,Iterator之类的普通类(在此称为“对象”)隐藏其数据,并揭示或公开其对这些数据起作用的方法。
因此,我们有两种方法可以解决当前的问题,即以最纯粹的形式实现数据结构,同时构建另一个Object类以对其数据进行操作,或者,我们可以将模型类制作为Object类,从而将其隐藏数据,同时公开其方法,如以下示例所示
public class Square { public Point topLeft1; public double side1; } public class Rectangle { public Point topLeft1; public double height1; public double width1; } public class Circle { public Point center1; public double radius1; } public class Geometry { public final double PI = 3.141592653589793; public double area(Object shape) throws NoSuchShapeException { if (shape instanceof Square) { Square s = (Square)shape; return s.side1 x s.side1; }else if (shape instanceof Rectangle) { Rectangle r = (Rectangle)shape; return r.height1 x r.width1; }else if (shape instanceof Circle) { Circle c = (Circle)shape; return PI x c.radius1 x c.radius1; } throw new NoSuchShapeException(); } }
在此解决方案中,形状被视为数据结构,而几何类被视为对象。
优势-如果我们需要添加更多方法,我们将仅在Geometry类中添加它们(这是应实施该解决方案的时间)。
缺点-如果我们需要添加更多的数据结构(即更多的形状),则必须在Geometry类中更改所有方法。
对象公开行为并隐藏数据。这使得在不更改现有行为的情况下添加新的对象变得很简单。这也使向现有对象添加新行为变得困难。
数据结构显示或公开数据,并且没有重大行为。这使向现有数据结构中添加新行为变得简单,但使向现有功能中添加新数据结构变得困难。