南充企业网站建设营销型网站建设团队
介绍
简单工厂(Simple Factory)模式,又称为静态工厂方法(Static Factory Method)模式。
由一个工厂类来创建具体产品,即创建具体类的实例。
简单工厂模式从概念上涉及三个角色:
- 抽象产品角色:是具体类的父类,规定了所有类的共同行为。一般是抽象类、或者接口。
- 具体产品角色 :是具体的实现类,继承父类、或者实现父接口。
- 工厂类角色:提供静态方法,即工厂方法,供客户端调用,根据传入的参数,来创建具体的产品,即具体类的实例化。工程类提供的工厂方法可以有多个。
当然,上面的三个角色是从概念上进行划分的,在具体实现上,有些角色可以合并。
代码示例
// 定义了一个接口
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");}
}