概念:工厂模式负责将大量有共同接口的类实例化,工厂模式可以动态决定将哪个类实例化。
种类:简单工厂(Simple Factory)模式、工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)。
简单工厂(Simple Factory)模式:
简单工厂模式是类的创建模式,又叫做静态工厂方法模式,简单工厂模式是由一个工厂对象决定创建 出哪种产品类的实例。
一个图形的实例:
interface Shape:
package org.xueji.pattern.simplefactory;
/**
* @author xueji
*/
public interface Shape {
void draw() throws Exception;
void erase() throws Exception;
}Circle implements Shape:package org.xueji.pattern.simplefactory;
import org.xueji.pattern.simplefactory.Shape;
public class Circle implements Shape {
@Override
public void draw() throws Exception {
System.out.println("Circle draw");
}
@Override
public void erase() throws Exception {
System.out.println("Circle erase");
}
}Square implements Shape
package org.xueji.pattern.simplefactory;
import org.xueji.pattern.simplefactory.Shape;
public class Square implements Shape {
@Override
public void draw() throws Exception {
System.out.println("square draw");
}
@Override
public void erase() throws Exception {
System.out.println("square erase");
}
}Triangle implements Shape:
package org.xueji.pattern.simplefactory;
import org.xueji.pattern.simplefactory.Shape;
public class Triangle implements Shape {
@Override
public void draw() throws Exception {
System.out.println("Triangle draw");
}
@Override
public void erase() throws Exception {
System.out.println("Triangle erase");
}
}
SimpleFactory:
package org.xueji.pattern.simplefactory;
/**
* 简单工厂
* @author xueji
*/
public class SimpleFactory {
public static Shape newInstance(String type) throws Exception{
if("circle".equalsIgnoreCase(type)){
return new Circle();
}else if("square".equalsIgnoreCase(type)){
return new Square();
}else if("triangle".equalsIgnoreCase(type)){
return new Triangle();
}else{
throw new HelloException();
}
}
}Client:package org.xueji.pattern.simplefactory;
/**
* 简单工厂测试
* @author xueji
*/
public class Client {
public static void main(String[] args) throws Exception {
Shape circle = SimpleFactory.newInstance("Square");
circle.draw();
}
}result:square draw
本文介绍简单工厂模式的概念及其应用场景,并通过一个图形实例展示了如何使用简单工厂模式来创建不同类型的形状对象。
88

被折叠的 条评论
为什么被折叠?



