Java设计模式-简单工厂(Simple Factory)模式

介绍

简单工厂(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");
	}
}

你可能感兴趣的:(java,设计模式,简单工厂模式)