如何在这个程序中应用面向对象的设计?

时间:2016-03-09 09:36:58

标签: java oop design-patterns interface abstract-class

编写一个程序,该程序具有以产品类开头的多个类。还有继承产品类的计算机,软件和立体类。笔记本电脑和桌面类继承了计算机以及继承Stereo类的家庭影院和汽车音响。 该程序应允许您输入新产品并将其保存到数据库中。根据文件中的记录数,为每个产品提供唯一的ID号。在详细信息选项卡上,您可以查看文件中的每条记录,查看每个产品的详细信息,甚至修改记录。

我做了什么 -

在DTO包中,

public interface Product {
    public int productId();
    public String name();
    public int price();
    public String type();

    public void setName(String name);
    public void setPrice(int price);
}

然后..我把计算机作为抽象类,扩展产品(I),桌面和笔记本电脑正在扩展计算机并覆盖产品的所有方法(I)。同样,我为立体声做了。

然后,在DAO包中

public interface ProductDao {

    public boolean addProduct(Product product);
    public boolean deleteProduct(int productId);
    public boolean updateProduct(int productId);
    public void retrieveAll();
}

然后我在ProductDaoImpl类中实现了这个方法。我的程序运行正常。 但我的设计呢?这是对的吗 ? 如果没有,那么请建议我一个更好的设计。

1 个答案:

答案 0 :(得分:0)

不好的是,您需要为每个具体产品创建太多类:DTO,DAO接口,DAO实现。考虑您已经实现了许多产品,现在需要对数据库访问进行更改。您需要进行太多更改。即使是基类,它看起来也不好。

今天最好使用ORM作为此类事物的标准方式。使用其他好方法,您甚至可以在运行时轻松切换数据库提供程序,而您的代码似乎对更改非常重要。