设计模式
小菜
想写点博客记录一下学习过程
20191106
“面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。”——《大话设计模式》
工厂模式
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。
在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端。
如何用工厂模式创建对象
由工厂模式创建的对象将是形状对象,如圆形,矩形
首先,设计一个接口来表示Shape
public interface Shape {
void draw();
}
然后创建实现接口的具体类
Circle.java 圆形
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle");
}
}
Rectangle.java方形
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle");
}
}
核心工厂模式是一个Factory类
ShapeFactory类基于传递给getShape()方法的String值创建Shape对象。如果String值为CIRCLE,它将创建一个Circle对象。
ShapeFactory.java
public class ShapeFactory {
//用getShape方法来实例化shape的类型
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
}
if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
}
if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
main方法中使用Factory类获取具体类的对象
Main.java
public class Main {
public static void main(String[] args) {
/*
* 工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。
* 在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端。
*/
ShapeFactory shapeFactory = new ShapeFactory();
Shape shape = shapeFactory.getShape("CIRCLE");
shape.draw();
}
}
以上代码运行结果为 Circle