工厂模式
工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。
在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端,增强了代码的隐蔽性。例如需要画出不同的颜色红、绿、蓝等,传入不同的参数实现不同颜色的绘制。
- 定义Color接口
public interface Color { void draw(); }
-实现不同颜色的绘制函数
public class Red implements Color { @Override public void draw() { System.out.println("Into Red::draw()!"); } } public class Green implements Color { @Override public void draw() { System.out.println("Into Green::draw()!"); } } public class Blue implements Color { @Override public void draw() { System.out.println("Into Blue::draw()!"); } }
- 工厂模式中的核心是通过getType()函数传入需要创建对象的参数类型,创建对应的对象。例如ColorFactroy类中,传入red参数,创建出Red对象。
public class ColorFactory { public Color getShape(String shapeType) { if (shapeType == null) return null; if (shapeType.equalsIgnoreCase("red")) { return new Red(); } else if (shapeType.equalsIgnoreCase("green")) { return new Green(); }else if (shapeType.equalsIgnoreCase("blue")) { return new Blue(); } return null; } }
- 测试
public static void main(String[] args) { ColorFactory colorFactory = new ColorFactory(); Color red = colorFactory.getShape("red"); red.draw(); Color green = colorFactory.getShape("green"); green.draw(); Color blue = colorFactory.getShape("blue"); blue.draw(); }
- 运行结果
Into Red::draw()! Into Green::draw()! Into Blue::draw()!