2017-12-24 11 views
3

私は練習のアンドロイドアプリを作成して(現在は貧弱な)Javaスキルを向上させようとしています。私のアプリでは、各画面は、入力、ロジック、レンダリングの処理を管理する単一のクラスによって管理されます。共依存オブジェクトを初期化するときのベストプラクティスは何ですか?

クラスによっては、理解できないほど大きくなっていたので、コードをメインスクリーンクラスのオブジェクトと呼ばれるいくつかの分類されたクラスに移動することにしました。たとえば:

public class Screen { 

ScreenA a; 
ScreenB b; 
ScreenC c; 

public Screen() { 
    a = new ScreenA(); 
    b = new ScreenB(); 
    c = new ScreenC(); 
} 

public void doStuff() { 
    a.method(); 
    b.method(); 
    c.method(); 
} 
} 

は、私が理解しようとしていますと、これはコード読みやすさを改善するための正しい方法であるかどうかであり、それはメモリ使用量/処理速度に影響があるかどうか。たとえば、静的メソッドを呼び出すほうがよいでしょうか?

さらに、クラスが相互に依存している場合、答えは変わりますか?例えば。 ScreenBのメソッドがScreenAで変数やメソッドを呼び出す必要がある場合下の2つの例のいずれかが適当であろうけれども、私は持っているだろうが、私は、ベストプラクティスているのか分からない:

public class Screen { 

ScreenA a; 
ScreenB b; 
ScreenC c; 

public Screen(){ 
    a = new ScreenA(); 
    b = new ScreenB(a); 
    c = new ScreenC(a,b); 
} 

public void doStuff(){ 
    a.method(); 
    b.method(); 
    c.method(); 
} 
} 

public class ScreenB { 

ScreenA a; 

public ScreenB(ScreenA a) { 
    this.a = a; 
} 
} 

か:

public class Screen { 

ScreenA a; 
ScreenB b; 
ScreenC c; 

public Screen(){ 
    a = new ScreenA(); 
    b = new ScreenB(); 
    c = new ScreenC(); 
} 

public void doStuff(){ 
    a.method(); 
    b.method(a); 
    c.method(a,b); 
} 
} 

答えて

4

私は理解しようとしています何がいるかどうかでありますこれは適切な方法です コードの読みやすさを向上させるかどうか、メモリに影響を与えるかどうか 使用/処理速度。たとえば、静的メソッドを呼び出すほうがよいでしょうか?

あなたがやったことは、基本的に、異なるクラスと囲み動作で異なる責任を分けていることです。これはOOPのすべてであり、JavaはOOP用に構築されています。インスタンス化するオブジェクトは、静的メソッドを呼び出す場合に比べてコストがかかりますが、恐れてはいけません。静的メソッドは、カプセル化、継承、依存性注入、およびOOアプリケーションを良いソフトウェアにする他の多くのことを許可しません。

さらに、クラスが に依存している場合、回答が変わるのですか?例えば。 ScreenBのメソッドがScreenAの変数または メソッドを呼び出す必要がある場合二つの例 以下のいずれかが適当であろうけれども、私は持っているだろうが、私はクラス属性に対するパラメータを決定するための親指のベストプラクティス

一つのルールは以下の通りですされるのか分からない:あなたは常に使用しようとしています同じパラメータ?はいの場合、パラメータではなく、状態なのでコンストラクタに渡す必要があります。いいえの場合、パラメータとして使用できます。

もう1つの良い指標は、その機能を実装するために同じパラメータをいくつ必要とするのでしょうか?これらのパラメータを必要とするメソッドが多数ある場合、属性はパラメータよりも意味をなさない可能性があります。

関連する問題