工厂模式
来源:互联网 发布:网络赌球犯法吗 编辑:程序博客网 时间:2024/06/16 17:18
工厂模式的概念:
实例化对象,用工厂方法代替new操作,包括工厂方法模式和抽象工厂模式,抽象工厂模式是工厂方法模式的扩展。
定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。工厂方法把实例化的工作推迟到子类中去实现。
什么情况下适合工厂模式:
有一组类似的对象需要创建
在编码时不能预见需要创建哪种类的实例
系统需要考虑扩展性,不应依赖于产品类实例如何被创建、组合和表达的细节
例子:
接口:发型
实现类:左分,右分
工厂类:创建getHair()方法根据需求返回相应的实例,可以通过new或反射的方式返回实例。
public class HairFactory {
public HairInterface getHair(String key){
if ("left".equals(key)) {
return new LeftHair();
}else if ("right".equals(key)) {
return new RightHair();
}else {
return null;
}
}
public HairInterface getHairByClass(String className){
try {
HairInterface hair =(HairInterface)Class.forName(className).newInstance();
return hair;
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
测试类:
public class MyTest {
public static void main(String[] args){
// HairInterface left = new LeftHair();
// left.draw();
HairFactory factory =new HairFactory();
// HairInterface left = factory.getHair("left");
// left.draw();
HairInterface left = factory.getHairByClass("com.dejun.factory.LeftHair");
left.draw();
}
}
抽象工厂和工厂方法的区别主要在于,抽象工厂是对多个产品。即工厂方法是一个接口下的不同类,而抽象工厂方法是对多个接口下的多个抽象类,在
利用工厂模式:
系统可以在不修改具体工厂角色的情况下引进新的产品
客户端不必关心对象如何创建,明确了职责
更好的理解面向对象的原则 面向接口编程 而不要面向实现编程
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- Stagefright,omx与Component的交互
- ORACLE 拼接字段
- Jdk 1.7.0_17中提供的默认的排序算法
- php报Class ZipArchive not found,安装zip扩展
- Error evaluating expression 'objectProperty.userId!=0'. Cause: org.apache.ibatis.ognl.NoSuchProperty
- 工厂模式
- Jdk 1.7.0_17中提供的默认的排序算法
- C字符串操作:查找字符串函数strstr()
- ORACLE wm_concat
- 第9周项目4 -广义表算法库及应用(2)
- LeetCode [416. Partition Equal Subset Sum] 难度[medium]
- NOIP2011复赛提高组day1(A:铺地毯 B:选择客栈 C:mayan游戏)
- 诛仙有感
- Android基础之handler使用步骤