设计模式之工厂模式
设计模式之工厂模式
工厂模式:
创建过程:
- 创建Shape接口
public interface Shape {
void draw();
} - 创建实现类:
public class Circle implements Shape {
@Override
public void draw() {
System.out.println(“this is a circle!”);
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println(“this is a square!”);
}
}
3. 创建类的工厂:
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;
}
}
}
4. 利用测试类进行测试:
public class FMMain {
public static void main(String[] args) {
Shape circle = ShapeFactory.getShape(“circle”);
circle.draw();
}
}
抽象工厂模式:
创建过程:
5. 创建shape接口:
public interface Shape {
void draw();
}
2.创建shape实现类:
public class Circle implements Shape{
@Override
public void draw() {
System.out.println("this is a Circle!");
}
}
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println(“this is a rectangle!”);
}
}
-
创建Color接口:
public interface Color {
void fill();
} -
创建Color实现类:
public class Green implements Color {
@Override
public void fill() {
System.out.println(“this is Green!”);
}
}
public class Red implements Color{
@Override
public void fill() {
System.out.println(“this is Red!”);
}
} -
为 Color 和 Shape 对象创建抽象类来获取工厂。
public abstract class AbstractFactory {
public abstract Color getColor(String color);
public abstract Shape getShape(String shape);
} -
创建扩展了 AbstractFactory 的工厂类
public class ColorFactory extends AbstractFactory {
@Override
public Color getColor(String color) {
if(“green”.equals(color)){
return new Green();
}else if(“red”.equals(color)){
return new Red();
}else{
return null;
}
}@Override
public Shape getShape(String shape) {
return null;
}
}
public class ShapeFactory extends AbstractFactory {
@Override
public Color getColor(String color) {
return null;
}@Override
public Shape getShape(String shape) {
if(“rectangle”.equals(shape)){
return new Rectangle();
}else if(“circle”.equals(shape)){
return new Circle();
}else{
return null;
}
}
} -
创建一个工厂生成器类
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;
}
}
} -
使用 FactoryProducer 来获取 AbstractFactory,进行测试:
public class AFMain {
public static void main(String[] args) {
AbstractFactory color = FactoryProducer.getFactory(“color”);
Color green = color.getColor(“green”);
green.fill();
}
}
上一篇: 函数