0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

試しにインタフェースクラスでプログラミングをしてみる。

Last updated at Posted at 2022-12-08

はじめに

lombokのアノテーションの意味を理解をしていることを前提として記事を書いています。
解説はしない。メモ用だ。

簡単な setter/getter

二通りの設計がある。

  • 従来のメソッド
  • チェーンメソッド

前者は、一行/一メソッドである。可読性重視コーディング方法、メソッドを細かくまとめたメソッドを書いていくことによって解消される。

後者は、一行/複数メソッドである。適切なフォーマットをしなければ可読性が下がってしまう。それとチェーンメソッドの設計( Builder クラス)がとんでもなく難しい。
これにパラメータの型を使用しているクラス(Map, Supplierなど)とかを使うと難易度、爆上がりか?

後者のチェーンメソッドで設計する。

従来のメソッド

古いライブラリ や 初心者向け などで見かけるコーディング設計

@Data
public class Test 
implements ITest {
    public int num;

    public void testcode() {
        // print -> 100
        this.setNum(100);
        this.getNum();    
    }
} 

public interface ITest {
    void setNum(int num);

    int getNum();
}

チェーンメソッド

jquery などで見かけるコーディング設計

@Data
@Accessors(fluent = true)
public class Test 
implements ITest {
    public int num;

    public void testcode() {
        // print -> 500
        this.num(500).num();    
    }
} 

public interface ITest {
    ITest num(int num);

    int num();
}

プログラミング

lombokの@Dataによってかなり手間が省ける実装方法。
こういう方法にすごい憧れてたから今回は、とても満足した。
いちいち

public interface ICalc<NUMBER extends Number> {
    ITest num(NUMBER num);

    NUMBER num();

    //
    default ITest add(NUMBER num){
        return this.num(num() + num);
    }

    default ITest sub(NUMBER num){
        return this.num(num() - num);
    }

    default ITest mul(NUMBER num){
        return this.num(num() * num);
    }

    default ITest div(NUMBER num){
        return this.num(num() / num);
    }
}

@Data
@Accessors(fluent = true)
public class CalcImpl
implements ICalc<Integer> {
    private Integer num;
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?