介绍
简单工厂(Simple Factory)模式,又称为静态工厂方法(Static Factory Method)模式。
由一个工厂类来创建具体产品,即创建具体类的实例。
简单工厂模式从概念上涉及三个角色:
- 抽象产品角色:是具体类的父类,规定了所有类的共同行为。一般是抽象类、或者接口。
- 具体产品角色 :是具体的实现类,继承父类、或者实现父接口。
- 工厂类角色:提供静态方法,即工厂方法,供客户端调用,根据传入的参数,来创建具体的产品,即具体类的实例化。工程类提供的工厂方法可以有多个。
当然,上面的三个角色是从概念上进行划分的,在具体实现上,有些角色可以合并。文章来源:https://www.toymoban.com/news/detail-570809.html
这个模式通过一个工厂类隔开了客户端和具体的产品类。如果增加新的产品,客户端可以不修改,但工厂类必须修改。文章来源地址https://www.toymoban.com/news/detail-570809.html
代码示例
// 定义了一个接口
package com.thb;
public interface Shape {
// 面积
double area();
// 周长
double perimeter();
}
// 一个具体实现类:圆
package com.thb;
public class Circle implements Shape {
// 半径
private double r;
public double area() {
System.out.println("圆的面积");
return Math.PI * Math.pow(r, 2);
}
public double perimeter() {
System.out.println("圆的周长");
return 2 * Math.PI * r;
}
// 设置半径
public void setRadius(double r) {
this.r = r;
}
}
// 具体实现类:矩形
package com.thb;
public class Rectangle implements Shape {
// 长
private double length;
// 宽
private double width;
public double area() {
System.out.println("矩形的面积");
return length * width;
}
public double perimeter() {
System.out.println("矩形的周长");
return 2 * (length + width);
}
// 设置长和宽
public void setLengthAndWidth(double length, double width) {
this.length = length;
this.width = width;
}
}
// 定义一个工厂类ShapeFactory
package com.thb;
public class ShapeFactory {
// 一个静态工厂方法
public static Shape getInstance(String shapeName) {
if (shapeName == "circle") {
return new Circle();
} else if (shapeName == "rec") {
return new Rectangle();
} else {
return null;
}
}
}
// 客户端
package com.thb;
public class Test1 {
public static void main(String[] args) {
Shape circle = ShapeFactory.getInstance("circle");
Shape rectangle = ShapeFactory.getInstance("rec");
}
}
到了这里,关于Java设计模式-简单工厂(Simple Factory)模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!