一篇博客读懂设计模式之---工厂模式

设计模式之—工厂模式

工厂模式:
在这里插入图片描述
创建过程:

  1. 创建Shape接口
public interface Shape {
	void draw();
}
  1. 创建实现类:
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!");
	}
}
  1. 创建类的工厂:
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;
		}
	}
}
  1. 利用测试类进行测试:
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();
}
  1. 创建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!");
	}
}
  1. 为 Color 和 Shape 对象创建抽象类来获取工厂。
public abstract class AbstractFactory {
	public abstract Color getColor(String color);
	public abstract Shape getShape(String shape);
}
  1. 创建扩展了 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;
		}
	}
}
  1. 创建一个工厂生成器类
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;
		}
	}
}
  1. 使用 FactoryProducer 来获取 AbstractFactory,进行测试:
public class AFMain {
	public static void main(String[] args) {
		AbstractFactory color = FactoryProducer.getFactory("color");
		Color green = color.getColor("green");
		green.fill();
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值