ジェネレータアレイ:抽象ファクトリアレイ


紹介する

  • インタフェース
  • は、互いに交差する複数のオブジェクトを作成するために使用される
    どのクラスを使用するかを特定するインスタンスを非表示にできます.

    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();
    }