您的位置:首页 > 其它

设计模式之工厂模式

2015-12-20 22:56 274 查看
工厂模式是一种创造型的设计模式,提供更好的方式创造对象。

在工厂模式中,我们可以创建对象而客户端无需关心业务逻辑。

例子

在下面的小节中,我们将会展示如何使用工厂设计模式去创建对象。这些对象是使用工厂模式创建的形状对象。比如圆形,正方形。

首先我们给出形状的接口。
public interface Shape {
void draw();
}


然后我们可以创建对象实现这个接口。

下面代码是矩形类代码。
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}


正方形:
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}


圆形代码:
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Inside Circle::draw() method");
}
}


工厂设计模式核心在于工厂类。下面代码展示如何通过工厂类创建一系列形状对象。

ShapeFactory类创建形状对象基于字符串置于getShape()获得,譬如字符串"CIRCLE",代表创建一个圆形对象。
public class ShapeFactory {

public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equals("CIRCLE")) {
return new Circle();
}
if (shapeType.equals("RECTANGLE")) {
return new Rectangle();
}
if (shapeType.equals("SQUARE")) {
return new Square();
}
return null;
}
}


下面是主方法展示如何通过工厂对象创建对象。
public class Main {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
Shape shape1 = shapeFactory.getShape("CIRCLE");
shape1.draw();
Shape shape2 = shapeFactory.getShape("RECTANGLE");
shape2.draw();
Shape shape3 = shapeFactory.getShape("SQUARE");
shape3.draw();
}
}


下面试上面代码的输出结果。

Inside Circle::draw() method

Inside Rectangle ::draw() method.

Inside Square::draw() method.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息