java设计模式----工厂方法模式
来源:互联网 发布:假钞在淘宝中的暗语 编辑:程序博客网 时间:2024/06/05 16:12
分为四部分:方法接口,方法具体实现,工厂接口,工厂具体实现
方法接口:
public interface Operation { public void operate();}
方法具体实现:
public class AddOperation implements Operation { @Override public void operate() { System.out.println("加法"); }}
public class SubOperation implements Operation { @Override public void operate() { System.out.println("减法"); }}
工厂接口:
public interface Factory { public Operation action();}
工厂具体实现:
public class AddFactory implements Factory { @Override public Operation action() { return new AddOperation(); }}
public class SubFactory implements Factory { @Override public Operation action() { return new SubOperation(); }}
运行:
public class Test { public static void main(String[] args){ Factory add = new AddFactory(); Operation operation = add.action(); operation.operate(); Factory sub = new SubFactory(); operation = sub.action(); operation.operate(); }}
结果:
加法
减法
优点:
符合开放-封闭原则;
减少了扩展的代码修改量;
缺点:
增加了代码的增量,每次添加一个方法,都要比简单工厂多增加一个工厂实体类;
优化:利用java的反射机制
工厂接口:
public interface FactoryOptimize { public <T extends Operation> T action(Class<T> c);}
public class ConcreteFactory implements FactoryOptimize { @Override public <T extends Operation> T action(Class<T> c) { T operation = null; try { operation = (T)Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return operation; }}
运行:
public class Test { public static void main(String[] args){ ConcreteFactory factory = new ConcreteFactory(); Operation operation = factory.action(AddOperation.class); operation.operate(); }}
加法
这样就不用每次都增加工厂具体实现类
0 0
- java设计模式--工厂方法设计模式
- Java工厂方法模式设计
- Java工厂方法模式设计
- java工厂方法设计模式
- java设计模式-工厂方法
- JAVA-工厂方法设计模式
- 【java】工厂方法设计模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- Java设计模式--工厂模式(简单工厂+工厂方法)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- postgresql cluster table
- 霸王别姬与蓝宇
- Netmask, 子网与 CIDR (Classless Interdomain Routing)
- Majority Element
- java string与bigdecimal之间的转化
- java设计模式----工厂方法模式
- equals和hashcode的区别
- 结合jQuery的unload方法实现JS退出页面弹出对话框
- 【web】mybatis入门详解,基础案例demo
- createjs初学-关于cache
- android自定义View组件封装jar包
- Android动画
- linux学习笔记----文件处理命令--head= 显示文件前几行内容
- win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法