我目前正在编写B + Tree的编码过程,这是我的代码的结构供参考,以便我的处理问题更有意义:
Class BPlusTree{
// some functions, members.. etc
};
Class Node{
// some functions, members.. etc
}
现在,这是我的问题/困境,因为我的Node是它自己的一个类,如果我想将一个键/值对插入一个节点,我将不得不调用BPlusTree插入函数,该函数又调用节点自己的插入功能(我无法直接访问Node的私有成员)。这对我来说似乎有点奇怪。
但是,如果我只是在我的Node Class中执行此操作:
friend class BPlusTree;
我可以访问Node的私有成员,因此我不需要在Node类中创建插入函数,因为现在我的BPlusTree插入函数可以访问成员。
这种方法好还是坏?我正在重构我的代码并不会让人痛苦,所以我想我现在就问这个问题为时已晚。
答案 0 :(得分:2)
在Node类中添加package com.amit.practice;
public class Test {
public static void main(String[] args) {
Test test= new Test();
int polyNum=test.polydrum(813123);
System.out.println(polyNum);
}
public int polydrum(int number){
int finalNum=0;
System.out.println("The given number is :"+number+" ");
do {
String revString = "";
String numString=""+number;
int numLength=numString.length();
for(int i=numLength-1;i>=0;i--){
revString += numString.charAt(i);
if(numString.equals(revString)){
System.out.println("The next polydrum number is :"+numString);
finalNum=Integer.parseInt(revString);
return finalNum;
}
}
number=number+1;
} while(finalNum!=number);
return finalNum;
}
}
根本不是坏事。如果insert()
调用BPlusTree::insert()
时看起来很奇怪,请不要对这种代码风格有一些优势。
我的回答可能是基于意见的。
Node::insert()
节点更完整,并且本身就是一个完整的类。 Node::insert()
类可以被您将来可能使用的许多其他类使用。因此,您不必一次又一次地编写Node
函数。
模块化正是上一段所指的内容。您的代码以这种方式变得更加模块化。
我并不反对与insert()
课程建立联系,但问题是您制作BPlusTree
的日期或使用BPlusTreeImproved
的任何内容,您必须与朋友联系以及使用Node
。这意味着不断变化和重新编译Node
。