「設計Pattern」抽象ファクトリモード
抽象ファクトリモード
アレイの作成
特定のクラスに依存することなく、相互に関連付けられたオブジェクトまたは依存するオブジェクトの組合せを作成するためのインタフェースを提供するモード.
こうぞう
インプリメンテーション
1.応用工場方法モデル
部品を購入する工場は、現在S社とK社があるということでしょう.
MotorFactory.class
public class MotorFactory{
public static Motor createMotor(String vendorID) {
Motor motor = null;
switch (vendorID) {
case "S":
motor = new S_Motor();
break;
case "K":
motor = new K_Motor();
break;
}
return motor;
}
}
DoorFactory.class
public class DoorFactory {
public static Door createDoor(String vendorID) {
Door door = null;
switch (vendorID) {
case "S":
door = new S_Door();
break;
case "K":
door = new K_Door();
break;
}
return door;
}
}
Main.class
public class Main {
public static void main(String[] args) {
Door S_Door = DoorFactory.createDoor("S");
Motor S_Motor = MotorFactory.createMotor("S");
S_Door.open();
S_Motor.move();
}
}
S_Door Open
S_Motor Move
に質問
2.抽象工場モデルの適用
Factory.class
public abstract class Factory {
abstract Motor createMotor();
abstract Door createDoor();
}
public class S_Factory extends Factory{
@Override
Motor createMotor() { return new S_Motor(); }
@Override
Door createDoor() { return new S_Door(); }
}
K_Factory.classpublic class K_Factory extends Factory {
@Override
Motor createMotor() { return new K_Motor(); }
@Override
Door createDoor() { return new K_Door(); }
}
Main.class
public class Main {
public static void main(String[] args) {
Factory factory = new S_Factory();
Motor motor = factory.createMotor();
Door door = factory.createDoor();
door.open();
motor.move();
}
}
S_Door Open
S_Motor Move
メリットとデメリット
Reference
この問題について(「設計Pattern」抽象ファクトリモード), 我々は、より多くの情報をここで見つけました https://velog.io/@cham/Design-Pattern-추상-팩토리-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol