Vous êtes sur la page 1sur 6

Abstract Factory Design Pattern in Java

The essence of the Abstract Factory Pattern is to "Provide an interface for creating families of related or dependent objects
without specifying their concrete classes."

Example 1

public interface Army {


}
public class ElfArmy implements Army {
@Override
public String toString() {
return "This is the Elven Army!";
}
}
public class OrcArmy implements Army {
@Override
public String toString() {
return "This is the Orcish Army!";
}
}
public interface Castle {
}
public class ElfCastle implements Castle {
@Override
public String toString() {
return "This is the Elven castle!";
}
}
public class OrcCastle implements Castle {
@Override
public String toString() {
return "This is the Orcish castle!";
}
}
public interface King {
}
public class ElfKing implements King {
@Override
public String toString() {
return "This is the Elven king!";
}
}
public class OrcKing implements King {
@Override

public String toString() {


return "This is the Orc king!";
}
}
/**
*
* The factory interface.
*
*/
public interface KingdomFactory {
Castle createCastle();
King createKing();
Army createArmy();
}
public class ElfKingdomFactory implements KingdomFactory {
public Castle createCastle() {
return new ElfCastle();
}
public King createKing() {
return new ElfKing();
}
public Army createArmy() {
return new ElfArmy();
}
}
public class OrcKingdomFactory implements KingdomFactory {
public Castle createCastle() {
return new OrcCastle();
}
public King createKing() {
return new OrcKing();
}
public Army createArmy() {
return new OrcArmy();

}
}
/**
*
* The essence of the Abstract Factory pattern is a factory interface
* (KingdomFactory) and its implementations (ElfKingdomFactory,
* OrcKingdomFactory).
*
* The example uses both concrete implementations to create a king, a castle and
* an army.
*
*/
public class App {
public static void main(String[] args) {
createKingdom(new ElfKingdomFactory());
createKingdom(new OrcKingdomFactory());
}
public static void createKingdom(KingdomFactory factory) {
King king = factory.createKing();
Castle castle = factory.createCastle();
Army army = factory.createArmy();
System.out.println("The kingdom was created.");
System.out.println(king);
System.out.println(castle);
System.out.println(army);
}
}

Vous aimerez peut-être aussi