云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 设计模式之创建类模式 - 工厂方法模式

设计模式之创建类模式 - 工厂方法模式

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 20:28:40

通用代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 抽象产品类 * @author Administrator * */ public abstract class Product { // 产品类的公共方法 public void method1() { // 业务处理逻辑 } // 抽象方法 public abstract void method2(); } 1 2 3 4 5 6 7 8 /** * 具体产品类1 * @author Administrator * */ public class ConcreteProduct1 extends Product { @Override 9 10 11 12 13 public void method2() { // 业务逻辑处理 } } 1 2 3 4 5 6 7 8 9 10 11 12 13 /** * 具体产品类2 * @author Administrator * */ public class ConcreteProduct2 extends Product { @Override public void method2() { // 业务逻辑处理 } } 1 /** 2 * 简单工厂模式中的工厂类 3 * @author Administrator 4 * 5 */ 6 public class SimpleFactory { 7 8 public static T createProduct(Class c) { 9 Product product = null; 10 11 try { 12 product = (Product)Class.forName(c.getName()).newInstance(13 } catch (InstantiationException e) { 14 // TODO Auto-generated catch block 15 e.printStackTrace(); 16 } catch (IllegalAccessException e) { 17 // TODO Auto-generated catch block 18 e.printStackTrace(); 19 } catch (ClassNotFoundException e) { 20 // TODO Auto-generated catch block 21 e.printStackTrace(); 22 } 23 24 25 26 27 } return (T) product; } 1 /** 2 * 场景类 3 * 4 * @author Administrator 5 * 6 */ 7 public class Client { 8 9 /** 10 * @param args 11 */ 12 public static void main(String[] args) { 13 Product product = SimpleFactory.createProduct(ConcreteProduct1.cla14 /* 15 * 继续业务处理 16 */ 17 product.method1(); 18 } 19 20 }

? 升级为多个工厂类

多工厂模式中,每一个产品类都对应一个创建类,好处就是创建类的职责清晰,而且结构简单,但是给可扩展性和可维护性带来了一定的影响。为什么这么说呢?如果要扩展一个产品类,就需要建立一个相应的工厂类,这样就增加了扩展的难度。因为工厂类和产品类的数量相同,维护时需要考虑两个对象之间的关系。

当然,在复杂的应用中一般采用多工厂的方法,然后在增加一个协调类,避免调用者与各个子工厂交流,协调类的作用是封装子工厂类,对高层模块提供统一的访问接口。 类图:

通用代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 抽象产品类 * @author Administrator * */ public abstract class Product { // 产品类的公共方法 public void method1() { // 业务处理逻辑 } // 抽象方法 public abstract void method2(); } 1 2 3 4 5 6 7 8 9 10 11 12 /** * 具体产品类1 * @author Administrator * */ public class ConcreteProduct1 extends Product { @Override public void method2() { // 业务逻辑处理 }

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

通用代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 抽象产品类 * @author Administrator * */ public abstract class Product { // 产品类的公共方法 public void method1() { // 业务处理逻辑 } // 抽象方法 public abstract void method2(); } 1 2 3 4 5 6 7 8 /** * 具体产品类1 * @author Administrator * */ public class ConcreteProduct1 extends Product { @Override 9 10 11 12 1

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com