[Pattern] Factory Method
工場方法モデルは?
ファクトリメソッドモードは、オブジェクトファクトリを作成する設計モードであり、どのオブジェクトを作成するかをサブクラスで決定します.
インタフェースを定義して
override
によってオブジェクトのモードが返される.使用する理由
工場メソッド構造
Product
ConcreteProduct
Creator
デフォルトでは、
ConcreteCreator
実施上の注意
工場メソッドモデルの実現方法は大体2種類ある
ファクトリメソッドのパラメータにより、複数の製品を生成できます。
メリットとデメリット
長所
例
アーチェリー戦士開始力/敏捷100/100/100アップグレード時に増加する力/敏捷10/30/10
これらのプロセスで新しいロールをインスタンス化する場合は、ファクトリモードを使用して構成します.
GOFは、特定のクラスの親であり、製品タイプを返すファクトリメソッド(abstract method)を持つClassCreator抽象クラスを記述します.CharacterCreatorConcreteCreatorファクトリメソッドを再定義することで、特定のクラス(ConcreteProduct)を返します.WarriorCreatorArcherCreatorProductファクトリメソッドが返すクラスの抽象クラス.CharacterConcreteProductクラスで定義されたメソッドの具体的なクラスが実装されています.WarriorArcher
コード#コード#
Character.java
package Velog;
public abstract class Character {
protected int STR;
protected int DEX;
public abstract void levelUp();
public int getSTR() {
return STR;
}
public void setSTR(int STR) {
this.STR = STR;
}
public int getDEX() {
return DEX;
}
public void setDEX(int DEX) {
this.DEX = DEX;
}
}
Archer.java
package Velog;
public class Archer extends Character {
@Override
public void levelUp() {
this.STR += 10;
this.DEX += 30;
}
}
Warrior.java
package Velog;
public class Warrior extends Character {
@Override
public void levelUp() {
this.STR += 30;
this.DEX += 10;
}
}
CharacterCreator.java
package Velog;
public abstract class CharacterCreator {
public Character CharacterCreator() {
final Character character = character();
character.setDEX(100);
character.setSTR(100);
return character;
}
protected abstract Character character();
}
ArcherCreator.java
package Velog;
public class ArcherCreator extends CharacterCreator{
@Override
protected Character character() {
return new Archer();
}
}
warriorCreator.java
package Velog;
public class WarriorCreator extends CharacterCreator{
@Override
protected Character character() {
return new Warrior();
}
}
Reference
この問題について([Pattern] Factory Method), 我々は、より多くの情報をここで見つけました https://velog.io/@hoony-code/Pettern-Factory-Method-Patternテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol