首页 > 学院 > 开发设计 > 正文

设计模式之简单工厂模式

2019-11-06 07:44:12
字体:
来源:转载
供稿:网友

设计模式之简单工厂模式


1. 简单工厂模式定义

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品关键代码:创建过程在其子类执行。

2. 代码实现

2.1 创建一个接口

public interface Shape { public void draw(); public void eraser();}

2.2 创建接口实体类

public class Square implements Shape { @Override public void draw() { System.out.PRintln("square draw"); } @Override public void eraser() { System.out.println("square eraser"); }}public class Circle implements Shape { @Override public void draw() { System.out.println("cicrle draw"); } @Override public void eraser() { System.out.println("circle eraser"); }}public class Triger implements Shape { @Override public void draw() { System.out.println("Triger draw"); } @Override public void eraser() { System.out.println("Triger eraser"); }}

2.3 创建工厂方法类

public class ShapeFactory { public static Shape factory(String alter) throws BadException{ if("square".equals(alter)){ return new Square(); }else if("circle".equals(alter)){ return new Circle(); }else if("triger".equals(alter)){ return new Triger(); }else{ throw new BadException(); } }}

2.4 使用工厂方法类

public class Main { public static void main(String[] args) throws BadException { Shape factory = ShapeFactory.factory("square"); factory.draw(); factory.eraser(); }}

3. 总结

优点: 1. 一个调用者想创建一个对象,只要知道其名称就可以了。 2. 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3. 屏蔽产品的具体实现,调用者只关心产品的接口。

缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表