SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
クラスとクラスの依存を薄くす
                る
 2012/12/21 Fri @Ew Developers Mtg
          Akihiro Nakahara
今日の話

クラスの設計についての話をしたいと思います
良くある話

クラスから別のクラスを使うってのは良くある話で
すね
例えば
// 会社クラス
public class Company {
   Employee employee; // 社員クラス
   // コンストラクタ
   public Company(Employee employee) {
      this.employee = employee;
   }
   // 社員名の一覧を取得
   public List<String> getEmployeeNameList() {
      return this.employee.getNameList();
   }
}
例えば
// 会社クラスを使うクラス
public class Main {
   public static void main(String[] args) {
     Employee employee = new Employee();
     Company company = new Company(employee);
     // 社員名の一覧を取得
     List<String> nameList =
                      company.getEmployeeNameList();
   }
}
例えば

● 会社クラスは従業員クラスに依存しているの
  で、従業員クラスが削除された場合、会社クラス
  はコンパイルエラーになります
● 会社クラスは従業員クラスがないと実装を完了
  できません
ちょっと良くしてみる

インターフェースを使って良くしてみる
インターフェースを使って良くしてみる

インターフェースを作る

// 名称一覧を取得するインターフェース
public interface IGetNameListable {
   // 名称の一覧を取得
   List<string> getNameList();
}
インターフェースを使って良くしてみる

従業クラスはさっきのインターフェースを実装する

public class Employee implements IGetNameListable {
  public List<String> getNameList() {
     // このメソッドはインターフェースで定義されているので実
装しないといけない
  }
}
インターフェースを使って良くしてみる
// 会社クラス
public class Company {
    IGetNameListable employee;
    // コンストラクタ
    public Company(IGetNameListable employee) {
       this.employee = employee;
    }
    // 社員名一覧を取得
    public List<String> getEmployeeNameList() {
       return this.employee.getNameList();
    }
}
インターフェースを使って良くしてみる
// 会社クラスを使うクラス
public class Main {
   public static void main(String[] args) {
     IGetNameListable employee = new Employee();
     Company company = new Company(employee);
     // 社員名の一覧を取得
     List<String> nameList =
                      company.getEmployeeNameList();
   }
}
インターフェースを使って良くなったこと

● インターフェースを使うことで、会社クラスと従業
  員クラスとの依存がなくなりました
● もし、従業員クラスが削除されたとしても、会社
  クラスはコンパイルエラーになりません
● 会社クラスは従業員クラスが無くても実装でき
  ます
● 各クラスの依存が薄くなることによってメンテナ
  ンス性と拡張性が良くなります(きっと)
まとめ

● クラスとクラスの依存を薄くするためにインター
  フェースを使おう
● なんとなく実装するのではなく、クラスを設計し
  よう
聞いてみたい

依存を薄くするためのもっと良い方法や、オブジェ
クト指向なクラス設計について聞いてみたいです
ありがとうございました

Weitere ähnliche Inhalte

Andere mochten auch

Mini magickでの画像合成
Mini magickでの画像合成Mini magickでの画像合成
Mini magickでの画像合成Yoshiki Kobayashi
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッドKohsuke Yuasa
 
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)Yuki Tamura
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツShunji Konishi
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょうなおき きしだ
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューMoriharu Ohzu
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 

Andere mochten auch (15)

Mini magickでの画像合成
Mini magickでの画像合成Mini magickでの画像合成
Mini magickでの画像合成
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
よいコード、わるいコード
よいコード、わるいコードよいコード、わるいコード
よいコード、わるいコード
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 

クラスとクラスの依存を薄くする