3 つのクラスがある場合は、引数のためにそれらを呼び出しましょう。
- 主な活動
- GLRenderer
- その他のクラス
GLRendererは純粋なプロキシ クラスではなく、いくつかのプロキシ メソッドが含まれていることに注意してください。
MainActivityは、valueと呼ばれる int を初期化します。さて、なんらかの理由でOtherClassがその値を変更する必要があり、GLRenderer クラスに直接アクセスするしかない場合(これはMainActivityクラスにアクセスできます)、この変数にアクセスする最善の方法は何でしょうか?
現在、私はMainActivityでセッター メソッドを使用し、次にGLRendererで別のセッターを使用しています (値を渡すだけなので、実際にはプロキシ メソッドです)。
これはうまく機能し、現在私がやっている方法です。ここにいくつかの疑似コードがあります(このコードはコンパイルできない可能性があることを認識しています。これは純粋にこの質問の目的のためです):
主な活動
public class MainActivity extends Activity {
private int value;
public setValue(int valueToSet){
value = valueToSet;
}
}
セカンドクラス
public class GLRenderer {
private MainActivity activity;
public GLRenderer(MainActivity activity){
this.activity = activity;
}
public setValue(int value){
activity.setValue(value);
}
}
その他のクラス
public class OtherClass {
private GLRenderer glRenderer;
public OtherClass(){
this.glRenderer = glRenderer;
}
public someMethod(){
glRenderer.setValue(5);
}
}
上記は、次のようなことを行うよりも優れています: ( OtherClassコードのコメントを参照してください)
GLRenderer
public class GLRenderer {
private MainActivity activity;
public GLRenderer(MainActivity activity){
this.activity = activity;
}
public MainActivity getActivity(){
return activity;
}
}
その他のクラス
public class OtherClass {
private GLRenderer glRenderer;
public OtherClass(){
this.glRenderer = glRenderer;
}
public someMethod(){
//I know this is considered bad.....
glrenderer.activity.setValue(5);
//But how about this - is this any different/better and if so, why?
glRenderer.getActivity().setValue(5);
}
}
最初のメソッドでは、 OtherClassでより短い最終命令が必要であることはわかっていますが、上記のメソッドを使用すると、ゲッター/セッターを効果的に複製することなく、 MainActivityから何かにアクセスできます(必要なものがたくさんある場合、これは苦痛になる可能性があります)。アクセス)。