public class Circle implements Shape {@Overridepublic void draw() {System.out.println("this is a circle!");}
}
public class Square implements Shape {@Overridepublic void draw() {System.out.println("this is a square!");}
}
創(chuàng)建類(lèi)的工廠:
public class ShapeFactory {public static Shape getShape(String shape){if("circle".equals(shape)){return new Circle();}else if("square".equals(shape)){return new Square();}else{return null;}}
}
利用測(cè)試類(lèi)進(jìn)行測(cè)試:
public class FMMain {public static void main(String[] args) {Shape circle = ShapeFactory.getShape("circle");circle.draw();}}
抽象工廠模式:
創(chuàng)建過(guò)程: 5. 創(chuàng)建shape接口:
public interface Shape {void draw();
}
2.創(chuàng)建shape實(shí)現(xiàn)類(lèi):
public class Circle implements Shape{@Overridepublic void draw() {System.out.println("this is a Circle!");}
}
public class Rectangle implements Shape{@Overridepublic void draw() {System.out.println("this is a rectangle!");}
}
創(chuàng)建Color接口:
public interface Color {void fill();
}
創(chuàng)建Color實(shí)現(xiàn)類(lèi):
public class Green implements Color {@Overridepublic void fill() {System.out.println("this is Green!");}
}
public class Red implements Color{@Overridepublic void fill() {System.out.println("this is Red!");}
}
為 Color 和 Shape 對(duì)象創(chuàng)建抽象類(lèi)來(lái)獲取工廠。
public abstract class AbstractFactory {public abstract Color getColor(String color);public abstract Shape getShape(String shape);
}
創(chuàng)建擴(kuò)展了 AbstractFactory 的工廠類(lèi)
public class ColorFactory extends AbstractFactory {@Overridepublic Color getColor(String color) {if("green".equals(color)){return new Green();}else if("red".equals(color)){return new Red();}else{return null;}}
@Overridepublic Shape getShape(String shape) {return null;}
}
public class ShapeFactory extends AbstractFactory {@Overridepublic Color getColor(String color) {return null;}
@Overridepublic Shape getShape(String shape) {if("rectangle".equals(shape)){return new Rectangle();}else if("circle".equals(shape)){return new Circle();}else{return null;}}
}
創(chuàng)建一個(gè)工廠生成器類(lèi)
public class FactoryProducer {public static AbstractFactory getFactory(String type){if("color".equals(type)){return new ColorFactory();}else if("shape".equals(type)){return new ShapeFactory();}else{return null;}}
}
public class AFMain {public static void main(String[] args) {AbstractFactory color = FactoryProducer.getFactory("color");Color green = color.getColor("green");green.fill();}
}