Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Refactoring to Patterns | Utilities | Unity Interface

パンくず

書籍 Refactoring to Patterns
Utilities
Unity Interface

概要

Unity Interfaceについて

使用する場面

複数の子クラスに、共通するシグニチャメソッドがあるがインターフェース
もしくは抽象基底クラスにインターフェースが用意されていない。

対応方法

共通のシグニチャスーパークラスもしくはインターフェースに作成する。

サンプル

Rubyはダック・タイピングが可能であるためにこの問題は気にする必要がない。
サンプルコードはJava

リファクタリング
public abstract class BaseAbstract {
  public void method1();
}

public class ChildClassA extends BaseAbstract {
  public void method1() {
    System.out.println("childClassA method1");
  }
  
  public void method2() {
    System.out.println("childClassA method2");
  }
}

public class ChildClassB extends BaseAbstract {
  public void method1() {
    System.out.println("childClassB method1");
  }
  
  public void method2() {
    System.out.println("childClassB method2");
  }
}
リファクタリング
public abstract class BaseAbstract {
  public void method1();
  public void method2();
}

public class ChildClassA extends BaseAbstract {
  public void method1() {
    System.out.println("childClassA method1");
  }
  
  public void method2() {
    System.out.println("childClassA method2");
  }
}

public class ChildClassB extends BaseAbstract {
  public void method1() {
    System.out.println("childClassB method1");
  }
  
  public void method2() {
    System.out.println("childClassB method2");
  }
}