Skip to content

Commit

Permalink
feat(Abstract Factory): added new Implementation for Abstract Factory…
Browse files Browse the repository at this point in the history
… in Java (Asiatik#186)
  • Loading branch information
cassunde authored and tstreamDOTh committed Oct 4, 2018
1 parent 9f3642a commit 7b985f2
Show file tree
Hide file tree
Showing 11 changed files with 146 additions and 0 deletions.
35 changes: 35 additions & 0 deletions Java Design Patterns/AbstractFactory/App.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
public class App{

/**
*
* Here is used a implementation Abstract Factory
*
* */
public static void main( String[] args ){

FactoryCar factory;

//Using firt implementations
factory = new GMCFactory();
printInformations(factory);

//Using second implementation
factory = new ToyotaFactory();
printInformations(factory);
}

public static void printInformations(FactoryCar factory) {

Minivan minivan = factory.createMinivan();
System.out.println("------- Info MiniVan---------");
minivan.printName();
minivan.printFuel();
System.out.println("-----------------------------");

Pickup pickup = factory.createPickup();
System.out.println("------- Info Pickup---------");
pickup.printName();
pickup.printFuel();
System.out.println("-----------------------------");
}
}
5 changes: 5 additions & 0 deletions Java Design Patterns/AbstractFactory/FactoryCar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public interface FactoryCar {

Minivan createMinivan();
Pickup createPickup();
}
13 changes: 13 additions & 0 deletions Java Design Patterns/AbstractFactory/GMCFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class GMCFactory implements FactoryCar {

public Minivan createMinivan() {

return new Savana();
}

public Pickup createPickup() {

return new Sierra();
}

}
5 changes: 5 additions & 0 deletions Java Design Patterns/AbstractFactory/Minivan.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public interface Minivan {

public void printName();
public void printFuel();
}
5 changes: 5 additions & 0 deletions Java Design Patterns/AbstractFactory/Pickup.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public interface Pickup {

public void printName();
public void printFuel();
}
13 changes: 13 additions & 0 deletions Java Design Patterns/AbstractFactory/Savana.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class Savana implements Minivan {

public void printName() {
System.out.println("Savana 1500 Cargo");

}

public void printFuel() {
System.out.println("Flex");

}

}
13 changes: 13 additions & 0 deletions Java Design Patterns/AbstractFactory/Sienna.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class Sienna implements Minivan {

public void printName() {

System.out.println("Sienna");
}

public void printFuel() {

System.out.println("Gasoline");
}

}
13 changes: 13 additions & 0 deletions Java Design Patterns/AbstractFactory/Sierra.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class Sierra implements Pickup {

public void printName() {

System.out.println("GMC Sierra 1500 SLT Ext. Cab 4WD");
}

public void printFuel() {

System.out.println("Flex");
}

}
12 changes: 12 additions & 0 deletions Java Design Patterns/AbstractFactory/Tacoma.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
public class Tacoma implements Pickup {

public void printName() {

System.out.println("TACOMA");
}

public void printFuel() {

System.out.println("Diesel");
}
}
13 changes: 13 additions & 0 deletions Java Design Patterns/AbstractFactory/ToyotaFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class ToyotaFactory implements FactoryCar {

public Minivan createMinivan() {

return new Sienna();
}

public Pickup createPickup() {

return new Tacoma();
}

}
19 changes: 19 additions & 0 deletions Java Design Patterns/AbstractFactory/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Abstract Factory

Has primary responsibility for reducing the use of `new`, this pattern provide a interface to create a family objects.

How in example we have a family of Car( Minivan and Pickups ), but can have several implementations how:

- ToyotaFactory
- GMCFactory

With this pattern we can create any CarFactory, just implemented it.

See follow classes:

- `FactoryCar`
- `MiniVan`
- `Pickup`
- Implementations for `Minivan` and `Pickup`
- `GMCFactory`
- `ToyotaFactory`

0 comments on commit 7b985f2

Please sign in to comment.