5

2 つの Eclipse プロジェクトで使用しているモデル クラス ( MVC パターン) があります。

1 つのプロジェクト ( と呼びましょうProducer) は、ストリームからデータをキャプチャしてデータベースに保存しています。問題のモデルクラス、たとえばObjectModelは、シリアライズしてデータベースに格納する前に、操作のためにストリームをデシリアライズするために使用されます。

別のプロジェクト ( と呼びましょうConsumer) は、データベースに保存されているデータを取り込み、画面上で視覚化しています。同じモデル クラスを使用して、保存されたデータを視覚化アプリケーションで使用するために逆シリアル化します。

プロジェクト全体でObjectModelソースを共有するために、Eclipse プロジェクトに入れることを計画しました。ただし、現在、各アプリケーションには、package-private アクセス修飾子を利用して のフィールドを取得および設定するクラスが同じパッケージに含まれています。ProducerConsumerObjectModel

複数の Eclipse プロジェクトでソースを共有し、共有ソースへのパッケージ プライベート アクセスを維持する方法はありますか?

更新: Eclipse プロジェクト間でコードを共有するのに問題がありました。そのため、投稿する前にこれを試しませんでした。最後にその部分が機能するようになり、別の回答としてここに書きました。

4

2 に答える 2

1

上記の@GreyBeardedGeekの回答を見てください:

Producer プロジェクトと Consumer プロジェクトのクラスが ObjectModel と同じパッケージで宣言されている限り、すべてが機能するはずです。

Java で C++ の友達を探しています。一般に、これは間違った設計の兆候である可能性があります。設計に問題がなければ、"package-private access" を使用してフレンドを実装する Java 標準の方法です。クラスが異なるプロジェクトにある場合、技術的には機能します...設計が問題ないと思われる場合は、* Heper クラスの使用を検討してください。例えば:

public class SomeClass {
 void foo(){...
 }
}

public class SomeClassHelper {
 private SomeClass someClass;
 public SomeClassHelper(SomeClass someClass){
  //you can do it better this with some DI Framework,
  //for illustration purpose
  this.someClass=someClass;
 }

 public SomeClassHelper(){
  //for illustration purpose only
  this.someClass=new SomeClass();
 }

 **public** void foo(){
    //this is punch line
    someClass.foo();
  }

}

SomeClassHelper は SomeClass と同じパッケージに配置する必要がありますが、SomeClassHelper は別のソース フォルダーまたはプロジェクトに配置できます。

于 2012-09-23T18:56:04.463 に答える
1

Producer プロジェクトと Consumer プロジェクトのクラスが ObjectModel と同じパッケージで宣言されている限り、すべてが機能するはずです。

ただし、設計を再考し、ObjectModel でパブリック アクセサー メソッド (getter および setter) を提供することをお勧めします。

于 2012-09-22T02:11:57.960 に答える