繁体   English   中英

从子类创建超类的正确方法

[英]Proper way to create superclass from subclass

我有一个客户端 - 服务器应用程序。

客户端有一个类:Item.java

public class Item
    public string name;
    public string size;

并且服务器有一个类PersistableItem.java,它允许我使用JPA存储它

public class PersistableItem extends Item
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long Id;

并将其发送到执行addItemToServer方法的服务器:

public void addItem( Item item){
    //create PersistableItem from item
    DAO.save([paramerter = PersistableItem]);     
}

在我的服务器方法中,我将项目转换为PersistableItem吗? 我是否在PersistableItem中创建了一个包含Item的构造函数?

这里的设计是什么?

正如您所建议的,您可以在SomePersistedItem中创建一个带有SomeItem的构造函数。 在构造函数中,使用名称和大小调用super,因此可以正确填充SomePersistedItem。

public class SomePersistableItem extends SomeItem
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long Id;

    public SomePersistableItem(SomeItem originalItem) {
        super(originalItem.getName(), originalItem.getSize());
    }

而你只需添加它。

public void addItem( someItem item){
    DAO.save(new PersistableItem(item));     
}

假设你在SomeItem中有一个带有名称和大小的构造函数。 否则你使用任何方法来构建SomeItem(Factory,setters ......)

我会让你的persistable项扩展一个接口

public interface Persistable {
    boolean persist();
}

public class SomePersistableItem extends SomeItem implements Persistable {

}

public void addItem(Persistable p) {
    p.persist();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM