简单工厂模式很容易理解,在项目中用到了一个这样的例子。
AbstractUMLConnectionModel是一个抽象的父类,它的子类包括:GeneralizationModel,RealizationModel,DependencyModel,AggregationModel,CompositeModel。
那么好,接下类根据需要我们使用简单工厂实现获得需要的子类对象。(又是父类引用指向子类对象,可见这是多么的重要。)。注意抽象方法的引用也是可以的,接口的引用也可以这样用。
package com.jenson.vrp.editor.ir.model.operate; import net.java.amateras.uml.model.AbstractUMLConnectionModel; import net.java.amateras.uml.model.AggregationModel; import net.java.amateras.uml.model.CompositeModel; import net.java.amateras.uml.model.DependencyModel; import net.java.amateras.uml.model.GeneralizationModel; import net.java.amateras.uml.model.RealizationModel; public class RelationFactory { public static AbstractUMLConnectionModel createRelation(String relationType) { AbstractUMLConnectionModel connx = null; switch (relationType) { case "继承": connx=new GeneralizationModel(); break; case "实现": connx=new RealizationModel(); break; case "依赖": connx=new DependencyModel(); break; case "聚合": connx=new AggregationModel(); break; case "组合": connx=new CompositeModel(); break; default: break; } return connx; } }