目录
思考:对于我们的购物ShoppingCart类,需要设计ShoppingCartDao接口吗?
思考:设计与实现ShoppingCartDao需要考虑什么?
1.使用子类与继承体现不同商品的特性:
- 构建父类:Commodity 其中有商品的基础属性:如商品名字,商品价格,商品的编号。
- 以及对应的构造函数与get,set方法。
- 继承与商品类的子类Phone与Book。其作为子类拥有其特有的信息,如Phone的像素,尺寸,制造商。以及Book的作者,作者信息,出版社。
- 子类的构造函数会先调用父类的构造函数再执行自己的构造函数。
- 子类的show会先调用父类的show,输出商品的基本信息。
2.使用多态、DAO模式为商城增加不同的存储方法:
- 定义Dao接口,里面定义了对数据的基础操作方法。
- 定义2个类实现接口。其中ShoppingCartArray采用数组的方式保存商品,ShoppingCartArraylist采用Arraylist的方法保存商品。
- 2个类各自根据其储存类型实现接口的方法。
在测试代码中实现Dao
在初始化函数中,使用面向接口的方法进行储存数据,对于11行与12行的储存系统会根据其储存类型做出不同操作,而使用它只需要用接口定义的方法即可,不需要关心其内部的储存方式与实现方式。
通过多态的方式对商品进行储存,将子类放入父类的数组中,这样在使用数组元素时会自动选择对应的子类而调用相关方法。这简易了代码。
运行结果:
思考:对于我们的购物ShoppingCart类,需要设计ShoppingCartDao接口吗?
需要。
理由:
- shopping储存的数据方式可以设计为多种,而使用ShoppingCartDao接口可以统一的使用这些数据。
- 通过 DAO 模式可以向其他部分隐藏细节,这就使得隔离出的部分也能够添加更多的组件来提供更好的服务;
- 通过将一系列相似的操作提炼并设计出一个接口,使得实现接口的类的特征更为鲜明,使得该类能更灵活地嵌入其他代码中发挥作用
思考:设计与实现ShoppingCartDao需要考虑什么?
- 对数据储存的操作。如增删减改。每一种储存数据的方式对应的操作并不相同。文件储存的add与数组储存的add操作存在差异。所以需要在接口定义一个统一的操作。然后在各自类中具体实现这个方法。
有必要。加入商品,删除商品的操作并不能统一实现。而是要在实现接口的类中具体实现,