【デザインパターン】AbstructFACTORYパターン

AbstructFactoryパターンのコード例です。

package org.example.abstruct.factory.factory;

public abstract class AbstructProduct1 {
    public abstract void method1();
}
package org.example.abstruct.factory.factory;

public abstract class AbstructProduct2 {
    public abstract void method2();
}
package org.example.abstruct.factory.factory;

public abstract class AbstructFactory {
    public static AbstructFactory getFactory(String className)
    {
        AbstructFactory factory = null;
        try {
            factory = (AbstructFactory)Class.forName(className).getDeclaredConstructor().newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return factory;
    }

    public abstract AbstructProduct1 createAbstructProduct1();
    public abstract AbstructProduct2 createAbstructProduct2();
}
package org.example.abstruct.factory.concrete;

import org.example.abstruct.factory.factory.AbstructProduct1;

public class concreteAbstructProduct1 extends AbstructProduct1 {
    @Override
    public void method1() {

    }
}
package org.example.abstruct.factory.concrete;

import org.example.abstruct.factory.factory.AbstructProduct2;

public class concreteAbstructProduct2 extends AbstructProduct2 {
    @Override
    public void method2() {

    }
}
package org.example.abstruct.factory.concrete;

import org.example.abstruct.factory.factory.AbstructFactory;
import org.example.abstruct.factory.factory.AbstructProduct1;
import org.example.abstruct.factory.factory.AbstructProduct2;

public class concreteAbstructFactory extends AbstructFactory {
    @Override
    public AbstructProduct1 createAbstructProduct1() {
        return new concreteAbstructProduct1();
    }

    @Override
    public AbstructProduct2 createAbstructProduct2() {
        return new concreteAbstructProduct2();
    }
}

Factoryパターンが1Productを作成していたのに対して、AbstructFactoryパターンは複数Productを作成できるようにしたパターンです。

factory作成時にクラス名の文字列からインスタンスを作る、と本に書いてありました。

このやり方はいろいろ応用できるかも。

ちなみに、(AbstructFactory)Class.forName(className).newInstance();と書くのは非推奨となっています。

問題点は、Productを追加した場合、すでに作成している全てのconcreteProductに実装が必要と言うことですね。

ビタミンB12を積極的に摂ったら耳鳴りが改善した。

ついこないだまで強烈な耳鳴りが一日中していたんですが、

これまでやってきたことと言うと、

  • 眼精疲労防止(蒸しタオルなど目のケア)
  • 肩こり首こりの改善

それでも耳鳴りがするものだから、別の要因があるんじゃ無いかと。

で、調べてみたら、ビタミンB12が足りていないという情報を見つけまして。

ビタミンB12ってどういう食材に含まれているかというと、

  • レバー
  • 魚介類
  • 海藻類

と、言うことなので、

おにぎり用に買ってあった焼き海苔をおつまみ感覚で食べたり、ビタミン系のサプリメントも飲んでみました。

そうすると、その次の日から、耳鳴りが気にならなくなってきました。

ここまで効果が出るのか。

どうやら、40代になると、ビタミンB系が不足して、体調不良を起こす人も多いらしく、

ドラッグストアに行くと、40代向けにビタミンB群を補充するためのサプリメントが売ってありましたし。

でも、ここまで効果がでるとは思わなかったので、

今後は味海苔とか韓国海苔とかも積極的に食べていこうと思います。