java设计模式-抽象工厂模式
2016-04-28 20:43
330 查看
抽象工厂模式
文件分为:AbstractFactory,ShapeFactory,ColorFactory
Shape,Color
Triangle,Square,Rectangle
Red
部分代码没有贴出
AbstractFactory:
public abstract class abstractFctory { abstract Color getColor(String color); abstract Shape getsShape(String shape); }
ShapeFactory:
public class ShapeFactory extends abstractFctory{ @Override Color getColor(String color) { return null; } @Override Shape getsShape(String shape) { if(shape == null){ return null; } if(shape.equalsIgnoreCase("TRIANGLE")){ return new Triangle(); } else if(shape.equalsIgnoreCase("RECTANGLE")){ return new Rectangle(); } else if(shape.equalsIgnoreCase("SQUARE")){ return new Square(); } return null; } }
ColorFactory:
public class ColorFactory extends abstractFctory{ @Override Color getColor(String color) { if(color==null) return null; else if(color.equalsIgnoreCase("RED")) return new Red(); return null; } @Override Shape getsShape(String shape) { // TODO 自动生成的方法存根 return null; } }
FactoryProducer:
这个是重点,这里开始是与工厂模式不同的地方
public class FactoryPeoducer { public static abstractFctory getFctory(String factory){ if(factory.equalsIgnoreCase("SHAPE")) return new ShapeFactory(); else if(factory.equalsIgnoreCase("COLOR")) return new ColorFactory(); return null; } }
测试代码:
public class MainDemo { public static void main(String[] args) { abstractFctory shapeFactory = FactoryPeoducer.getFctory("SHAPE"); Shape shape = shapeFactory.getsShape("TRIANGLE"); shape.draw(); abstractFctory colorFctory = FactoryPeoducer.getFctory("COLOR"); Color red = colorFctory.getColor("RED"); red.fill(); } }
输出:
Triangle color:red
理解:抽象工厂模式是对工厂模式的一个拓展,使其更加灵活,但是繁琐的一个地方是要构建相应的子类去实现接口,代码繁琐。要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。
相关文章推荐
- java类的初始化
- java--接口和内部类
- Java实现FTP上传下载功能
- eclipse cdt: import existing projects
- 配置java环境变量
- 【排序算法】希尔排序(java实现)
- 开始写Java项目
- Java并发: CountDownLatch、CyclicBarrier和Semaphore
- java之HashTable
- Java虚拟机 运行时数据区
- java 遍历hashmap
- ....are only available on JDK 1.5 and higher
- eclipse no project are found to import
- spring,mybatis事务管理配置与@Transactional注解使用
- java之HashMap
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- 20145304 Java第九周学习报告
- java简单MD5加密