Java设计模式(2):简单工厂模式
来源:互联网 发布:php 九九乘法表 表格 编辑:程序博客网 时间:2024/06/03 17:25
简单工厂模式又叫静态工厂模式,是工厂模式三中状态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。
单例模式设计思想:
1) 首先,定义一个抽象父亲类或接口
2) 定义具体的子类来继承或实现第一步的抽象父类或接口:
3) 定义一个简单工厂类,并定义一个静态生产方法,根据传进来的type参数生成对应的具体子类。
示例:
enum ShapeTYPE{
RECTANGLE,SQUARE,CIRCLE;
}//首先,创建一个接口。
interface Shape {
void draw();
}
//创建实现接口的实体类。
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("绘制矩形...");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("绘制正方形...");
}
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("绘制圆形...");
}
}
class ShapeFactory {
//使用 getShape 方法获取形状类型的对象
public Shape getShape(ShapeTYPE shapeType){
if(shapeType == null){
return null;
}
if(shapeType==ShapeTYPE.CIRCLE){
return new Circle();
} else if(shapeType==ShapeTYPE.RECTANGLE){
return new Rectangle();
} else if(shapeType==ShapeTYPE.SQUARE){
return new Square();
}
return null;
}
}
public class FactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
//获取 Circle 的对象,并调用它的 draw 方法
Shape shape1 = shapeFactory.getShape(ShapeTYPE.CIRCLE);
//调用 Circle 的 draw 方法
shape1.draw();
//获取 Rectangle 的对象,并调用它的 draw 方法
Shape shape2 = shapeFactory.getShape(ShapeTYPE.RECTANGLE);
//调用 Rectangle 的 draw 方法
shape2.draw();
//获取 Square 的对象,并调用它的 draw 方法
Shape shape3 = shapeFactory.getShape(ShapeTYPE.SQUARE);
//调用 Square 的 draw 方法
shape3.draw();
}
}
- Java设计模式2:简单工厂模式
- 简单工厂模式(java设计模式)
- Java设计模式--工厂模式(简单工厂+工厂方法)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- Java设计模式:工厂模式(一)简单工厂模式
- Java设计模式-工厂模式(1)简单工厂模式
- 设计模式(java)2——简单工厂模式
- Java设计模式(2):简单工厂模式
- 设计模式(2)-简单工厂模式
- 设计模式(2)简单工厂模式
- 设计模式(2)-简单工厂模式
- java设计模式之工厂设计模式(简单工厂设计模式、工厂设计模式、抽象设计模式)
- java设计模式-工厂模式(简单工厂模式和工厂方法模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式) (转)
- (转载)JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式之工厂模式(一):简单工厂模式+工厂方法模式
- 设计模式-java工厂模式1(简单工厂模式+工厂方法模式)
- java 简单工厂设计模式
- Ajax与SpringMVC交互详解
- Java的char默认值,打印时是否为空格
- Linux常用命令(三)
- 牛人的博客
- mysql服务启动报错1607
- Java设计模式(2):简单工厂模式
- MySQL 笔记-DriverManager 类与 Driver 类
- 开关问题
- android 轮播图
- 【JQ】 validate验证表单时多个name相同的元素的解决办法
- 程序员面试金典--面试23之求出满二叉树a和b点的最近公共祖先的编号
- EmpServlet案例--使用重定向和路径匹配访问路径(一个Servlet处理多个请求)
- @ResponseBody 零散知识
- C/C++中如何获取数组的长度?