欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式之工厂模式

程序员文章站 2022-03-14 10:15:30
...

设计模式之工厂模式

工厂模式:
设计模式之工厂模式
创建过程:

  1. 创建Shape接口
    public interface Shape {
    void draw();
    }
  2. 创建实现类:
    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!”);
}
}

  1. 创建Color接口:
    public interface Color {
    void fill();
    }

  2. 创建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!”);
    }
    }

  3. 为 Color 和 Shape 对象创建抽象类来获取工厂。
    public abstract class AbstractFactory {
    public abstract Color getColor(String color);
    public abstract Shape getShape(String shape);
    }

  4. 创建扩展了 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;
    }
    }
    }

  5. 创建一个工厂生成器类
    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;
    }
    }
    }

  6. 使用 FactoryProducer 来获取 AbstractFactory,进行测试:
    public class AFMain {
    public static void main(String[] args) {
    AbstractFactory color = FactoryProducer.getFactory(“color”);
    Color green = color.getColor(“green”);
    green.fill();
    }
    }

相关标签: 设计模式