Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
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();
}
}
9 changes: 9 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Blue.java
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");
}
}
9 changes: 9 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Circle.java
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");
}
}
6 changes: 6 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Color.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package design.pattern.abstractFactory;

public interface Color {

void fill();
}
26 changes: 26 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/ColorFactory.java
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;
}
}
17 changes: 17 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/FactoryProducer.java
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;
}
}
}
9 changes: 9 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Green.java
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");
}
}
11 changes: 11 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Rectangle.java
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");
}
}


9 changes: 9 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Red.java
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.");
}
}
6 changes: 6 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Shape.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package design.pattern.abstractFactory;

public interface Shape {

void draw();
}
30 changes: 30 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/ShapeFactory.java
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;
}
}

11 changes: 11 additions & 0 deletions Basics/Design Pattern contd/abstractFactory/Square.java
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");
}
}