ジェネレータアレイ:抽象ファクトリアレイ
紹介する
どのクラスを使用するかを特定するインスタンスを非表示にできます.
1)特徴
インプリメンテーション
1)Frameの作成
インタフェース
public interface Frame {
void shape();
}
実装クラス
public class AdvanteFrame implements Frame {
@Override
public void Shape() {
System.out.println("아반떼 프레임 생성");
}
}
public class SonataFrame implements Frame {
@Override
public void Shape() {
System.out.println("소나타 프레임 생성");
}
}
2)Wheelの作成
インタフェース
public interface Wheel {
void size();
}
実装クラス
public class AvanteWheel implements Wheel {
@Override
public void size() {
System.out.println("아반떼 휠 사이즈: 17");
}
}
public class SonataWheel implements Wheel {
@Override
public void size() {
System.out.println("소나타 휠 사이즈: 19");
}
}
3)工場
インタフェース
public interface CarFactory {
Frame createFrame();
Wheel createWheel();
}
実装クラス
public class AvanteFactory implements CarFactory {
@Override
public Frame createFrame() {
return new AvanteFrame();
}
@Override
public Wheel createWheel() {
return new AvanteWheel();
}
}
public class SonataFactory implements CarFactory {
@Override
public Frame createFrame() {
return new SonataFrame();
}
@Override
public Wheel createWheel() {
return new SonataWheel();
}
}
4)使用
Car類
@Getter
public class Car {
private Frame frame;
private Wheel wheel;
public Car(Frame frame, Wheel wheel) {
this.frame = frame;
this.wheel = wheel;
}
}
Main関数
public static void main(String[] args) {
CarFactory avanteFactory = new AvanteFactory();
Car avante = new Car(avanteFactory.createFrame(), avanteFactory.createWheel());
avante.getFrame().shape();
avante.getWheel().size();
CarFactory sonataFactory = new SonataFactory();
Car sonata = new Car(sonataFactory.createFrame(), sonataFactory.createWheel());
sonata.getFrame().shape();
sonata.getWheel().size();
}
Reference
この問題について(ジェネレータアレイ:抽象ファクトリアレイ), 我々は、より多くの情報をここで見つけました https://velog.io/@zenon8485/생성자-패턴-추상-팩토리-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol