网站建设模板报价,wordpress 菜单 文章列表,计算机培训中心网站,北京想象力网站建设公司介绍
简单工厂#xff08;Simple Factory#xff09;模式#xff0c;又称为静态工厂方法#xff08;Static Factory Method#xff09;模式。 由一个工厂类来创建具体产品#xff0c;即创建具体类的实例。
简单工厂模式从概念上涉及三个角色#xff1a;
抽象产品角色…介绍
简单工厂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);}
}