Skip to content

Commit 7b985f2

Browse files
cassundetstreamDOTh
authored andcommitted
feat(Abstract Factory): added new Implementation for Abstract Factory in Java (#186)
1 parent 9f3642a commit 7b985f2

File tree

11 files changed

+146
-0
lines changed

11 files changed

+146
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
public class App{
2+
3+
/**
4+
*
5+
* Here is used a implementation Abstract Factory
6+
*
7+
* */
8+
public static void main( String[] args ){
9+
10+
FactoryCar factory;
11+
12+
//Using firt implementations
13+
factory = new GMCFactory();
14+
printInformations(factory);
15+
16+
//Using second implementation
17+
factory = new ToyotaFactory();
18+
printInformations(factory);
19+
}
20+
21+
public static void printInformations(FactoryCar factory) {
22+
23+
Minivan minivan = factory.createMinivan();
24+
System.out.println("------- Info MiniVan---------");
25+
minivan.printName();
26+
minivan.printFuel();
27+
System.out.println("-----------------------------");
28+
29+
Pickup pickup = factory.createPickup();
30+
System.out.println("------- Info Pickup---------");
31+
pickup.printName();
32+
pickup.printFuel();
33+
System.out.println("-----------------------------");
34+
}
35+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public interface FactoryCar {
2+
3+
Minivan createMinivan();
4+
Pickup createPickup();
5+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class GMCFactory implements FactoryCar {
2+
3+
public Minivan createMinivan() {
4+
5+
return new Savana();
6+
}
7+
8+
public Pickup createPickup() {
9+
10+
return new Sierra();
11+
}
12+
13+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public interface Minivan {
2+
3+
public void printName();
4+
public void printFuel();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public interface Pickup {
2+
3+
public void printName();
4+
public void printFuel();
5+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class Savana implements Minivan {
2+
3+
public void printName() {
4+
System.out.println("Savana 1500 Cargo");
5+
6+
}
7+
8+
public void printFuel() {
9+
System.out.println("Flex");
10+
11+
}
12+
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class Sienna implements Minivan {
2+
3+
public void printName() {
4+
5+
System.out.println("Sienna");
6+
}
7+
8+
public void printFuel() {
9+
10+
System.out.println("Gasoline");
11+
}
12+
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class Sierra implements Pickup {
2+
3+
public void printName() {
4+
5+
System.out.println("GMC Sierra 1500 SLT Ext. Cab 4WD");
6+
}
7+
8+
public void printFuel() {
9+
10+
System.out.println("Flex");
11+
}
12+
13+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
public class Tacoma implements Pickup {
2+
3+
public void printName() {
4+
5+
System.out.println("TACOMA");
6+
}
7+
8+
public void printFuel() {
9+
10+
System.out.println("Diesel");
11+
}
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class ToyotaFactory implements FactoryCar {
2+
3+
public Minivan createMinivan() {
4+
5+
return new Sienna();
6+
}
7+
8+
public Pickup createPickup() {
9+
10+
return new Tacoma();
11+
}
12+
13+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Abstract Factory
2+
3+
Has primary responsibility for reducing the use of `new`, this pattern provide a interface to create a family objects.
4+
5+
How in example we have a family of Car( Minivan and Pickups ), but can have several implementations how:
6+
7+
- ToyotaFactory
8+
- GMCFactory
9+
10+
With this pattern we can create any CarFactory, just implemented it.
11+
12+
See follow classes:
13+
14+
- `FactoryCar`
15+
- `MiniVan`
16+
- `Pickup`
17+
- Implementations for `Minivan` and `Pickup`
18+
- `GMCFactory`
19+
- `ToyotaFactory`

0 commit comments

Comments
 (0)