Object 关于组件的类的设计

Object 关于组件的类的设计,object,design-patterns,Object,Design Patterns,让我们抽象地说,我想编程两个关系为1到nmany的类,我不知道最好的方法是什么。编程语言不重要 班级家长 { 字符串名; 出生日期; 数组子对象[];//在这里声明一个子对象数组并将ChildrenObject添加到>this更好,还是在childclass中使用一个指向Parent类型对象的变量指针更好 …构造函数设置器获取器。。。。 函数addChildType childvar { 此->儿童推送childvar } 函数removeChildChildtype childvar { }

让我们抽象地说,我想编程两个关系为1到nmany的类,我不知道最好的方法是什么。编程语言不重要

班级家长 { 字符串名; 出生日期; 数组子对象[];//在这里声明一个子对象数组并将ChildrenObject添加到>this更好,还是在childclass中使用一个指向Parent类型对象的变量指针更好

…构造函数设置器获取器。。。。 函数addChildType childvar { 此->儿童推送childvar } 函数removeChildChildtype childvar { } 函数saveDB { //我应该在那里保存什么?只有父对象还是在runtime>期间创建并添加到此对象实例的子对象???? 在关系数据库表中插入值名称、出生日期; //真的不知道什么是最好的,为什么 foreach键->子项的值do { 子->保存数据库 } } } 班童{ 父母我的父母; 字符串名; 字符串描述; ..构造函数setters getter…//没关系 saveDB{// 将名称、说明、myparent插入关系数据库表值; } }

所以我现在重复我的两个问题: 1.什么是最好的,为什么? 在父类中声明一个包含子类的数组 b在子类中声明一个变量,该子类包含对父对象的引用 c做以上两件事

关于保存到数据库,什么是最好的,为什么? 如果我采用表格第一个问题的方法,我是否必须像我在父类中写的那样保存子类,因为我看不出还有什么其他方法可以将子类保存到db以供以后使用。这里还有其他方法吗?? 如果我选b,我将不得不以某种方式管理内存中父母的孩子,这将是一个集合,没有问题,额外的,这不是一个问题。但在这种情况下,如果某个属性发生任何变化,我可以单独保存它,嗯,不确定

请在应用程序后面的数据库中处理这些问题,数据库不是必需的,关系数据库对我来说很好,nosql数据库也是如此。我只想把这些类设计得非常好,所以将来如果有什么需要改变的话,这些东西很容易改变,我希望尽可能使用最好的编程模式。我也阅读了几乎所有现有的OOP编程模式,但我仍然不能决定在这里做什么最好

PS:抱歉,代码没有选项卡


非常感谢

我会选择第一种方法

class Parent {

    private String id;
    private List<Child> childList;

    public List<Child> getChildList() {
        return childList;
    }

    public String getId() {
        return id;
    }

}

class Child {

    private String id; 

    public String getId() {
        return id;
    }

}
您可以将多个父项的数据插入为

    List<Parent> parentList = getParentList();
    for (Parent parent : parentList) {
        String parentId = parent.getId();
        for (Child child : parent.getChildList()) {
            String childId = child.getId(); // Parent info
            // Add to DB - you can pass parent info & child info
            // insert parentId, childId 
        }

    }
为什么每个孩子都不引用自己的父母

在这种情况下,您需要有一个包含子项的列表,这将打破OOPS的概念。例如:父对象,作为一个对象,需要了解它的子对象

它对DB有什么用处

在这种情况下,如果现在不需要,将来也不需要,您可以轻松导航到所需的父元素&只将其对应的子元素插入数据库。如果选择选项2,则需要循环所有子元素,这些子元素可能很长,但效率不高

您是否将函数插入到数据库中


在代码中注释。

1。好的,你能解释一下原因吗。好的,你能解释一下原因吗?2.如果要将数据插入数据库,您会放置函数吗?如果每个类中都有数据库中相应表的函数,那么由于必须在子表中保存父表,您如何处理子表中的插入?假设子表具有以下结构child_id,child_name,…,parent_id您打算将parent_id作为参数发送吗?因此,如果我理解正确,您建议不要将与数据库相关的内容放在任何类中,我的意思是不在parent和不在child中,并最终执行另一个处理数据库读写的类?是吗?这就是设计方案。您可以选择使用一个实用程序类来处理所有类型的DB操作。或者,您可以要求每个类知道如何处理与其类型相关的DB操作。或者,如果不需要重用此操作,只需在所需的位置为DB编写代码!!!