Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Implementing Abstract-Facory design pattern
  • Loading branch information
ShanukaPrabodha committed Oct 11, 2022
commit 1f2149f1e22fa4e3e109e27e62947730b3073b0f
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package design.pattern.abstractFactory;

public abstract class AbstractFactory {

public abstract Color getColor(String type);

public abstract Shape getShape(String type);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package design.pattern.abstractFactory;

public class AbstractFactoryPatternDemo {

private static final String SHAPE = "SHAPE";
private static final String CIRCLE = "CIRCLE";
private static final String RECTANGLE = "RECTANGLE";
private static final String SQUARE = "SQUARE";

private static final String COLOR = "COLOR";
private static final String RED = "RED";
private static final String GREEN = "GREEN";
private static final String BLUE = "BLUE";


public static void main(String[] args) {

AbstractFactory shapeFactory = FactoryProducer.getFactory(SHAPE);
Shape shape = shapeFactory.getShape(CIRCLE);
shape.draw();

FactoryProducer.getFactory(SHAPE).getShape(RECTANGLE).draw();
FactoryProducer.getFactory(SHAPE).getShape(SQUARE).draw();

FactoryProducer.getFactory(COLOR).getColor(RED).fill();
FactoryProducer.getFactory(COLOR).getColor(GREEN).fill();
FactoryProducer.getFactory(COLOR).getColor(BLUE).fill();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package design.pattern.abstractFactory;

public class Blue implements Color{

@Override
public void fill() {
System.out.println("Inside the Blue:fill() method");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package design.pattern.abstractFactory;

public class Circle implements Shape{

@Override
public void draw() {
System.out.println("Inside the Circle:draw() method");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package design.pattern.abstractFactory;

public interface Color {

void fill();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package design.pattern.abstractFactory;

public class ColorFactory extends AbstractFactory{

@Override
public Color getColor(String color) {

if(color.equalsIgnoreCase("RED")){
return new Red();
}
else if(color.equalsIgnoreCase("GREEN")){
return new Green();
}
else if(color.equalsIgnoreCase("BLUE")){
return new Blue();
}
else{
return null;
}
}

@Override
public Shape getShape(String type) {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package design.pattern.abstractFactory;

public class FactoryProducer {

public static AbstractFactory getFactory(String choice){

if(choice.equalsIgnoreCase("SHAPE")){
return new ShapeFactory();
}
else if(choice.equalsIgnoreCase("COLOR")){
return new ColorFactory();
}
else{
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package design.pattern.abstractFactory;

public class Green implements Color{

@Override
public void fill() {
System.out.println("Inside Green:fill() method");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package design.pattern.abstractFactory;

public class Rectangle implements Shape{

@Override
public void draw() {
System.out.println("Inside the Rectangle:draw() method");
}
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package design.pattern.abstractFactory;

public class Red implements Color{

@Override
public void fill() {
System.out.println("Inside Red:fill() method.");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package design.pattern.abstractFactory;

public interface Shape {

void draw();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package design.pattern.abstractFactory;

public class ShapeFactory extends AbstractFactory{

@Override
public Shape getShape(String shapeType) {

if(shapeType == null){
return null;
}
else if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
}
else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
}
else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
else{
return null;
}
}

@Override
public Color getColor(String type) {
return null;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package design.pattern.abstractFactory;

public class Square implements Shape{

@Override
public void draw() {
System.out.println("Inside the Square:draw() method");
}
}