- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工厂方法模式的系统涉及到的角色 抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在本系统中,这个角色由Java 接口Product 扮演;在实际的系统中,这个角色也常常使用抽象Java 类实现。 具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所声明的接口。工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。 实例(农场) 工厂方法模式和简单工厂模式 工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。 工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。 工厂方法模式和简单工厂模式 与简单工厂模式中的情形一样的是,ConcreteCreator 的factory() 方法返还的数据类型是一个抽象类型Product,而不是哪一个具体产品类型,而客户端也不必知道所得到的产品的真实类型。这种多态性设计将工厂类选择创建哪一个产品对象、如何创建这个对象的细节完全封装在具体工厂类内部。 对于增加新的产品类而言,这个系统完全支持“开-闭”原则。 抽象工厂模式 抽象工厂模式与工厂方法模式的区别 抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。 抽象工厂模式的结构 抽象工厂模式[GOF95]是对象的创建模式,它是工厂方法模式的进一步推广。 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创建这些产品对象的责任分割开来,可以引进抽象工厂模式。这样的话,消费产品的一方不需要直接参与产品的创建工作,而只需要向一个公用的工厂接口请求所需要的产品。 下面就以一个示意性的系统为例,说明这个模式的结构。 产品结构A和B 系统类图 抽象工厂模式涉及到的角色 抽象工厂(AbstractFactory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用Java 接口或者抽象Java 类实现,而所有的具体工厂类必须实现这个Java 接口或继承这个抽象Java 类。 具体工厂类(Conrete Factory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体Java 类实现这个角色。 抽象工厂模式涉及到的角色 抽象产品(Abstract Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。通常使用Java 接口或者抽象Java 类实现这一角色。 具体产品(Concrete Product)角色:抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,其内部一定充满了应用系统的商业逻辑。通常使用具体Java 类实现这个角色。 一般而言,有多少个产品等级结构,就会在工厂角色中发现多少个工厂方法。 每一个产品等级结构中有多少具体产品,就有多少个产品族,也就会在工厂等级结构中发现多少个具体工厂。 在什么情形下应当使用抽象工厂模式? (1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节。这对于所有形态的工厂模式都是重要的; (2)这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品; (上面这一条叫做抽象工厂模式的原始用意。) (3)同属于同一个产品族的产品是在一起使用的,这一约束必须要在系统的设计中体现出来; (4)系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。 抽象工厂模式在农场系统中的实现 “开-闭”原则 (1)增加新的产品族? (2)增加新的产品等级结构? JAVA工厂模式 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。 工厂模式的几种形态 (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory Method Pattern)。 (2)工厂方法(Factory Method)模式,又称多态性工厂(Polymorphic Factory)模式 或虚拟构造子(Virtual Constructor)模式; (3)抽象工厂(Abstract Factory)模式,又称工具箱(Kit 或Toolkit)模式。 简单工厂实例 比如说有一个农场公司,专门向市场销售各类水果。在这个系统里需要描述下列的水果: 葡萄 Grape 草莓 Strawberry 苹果 Apple 水果与其他的植物有
您可能关注的文档
最近下载
- 土地流转解约合同模板8篇.docx VIP
- 学堂在线 科研伦理与学术规范 期末考试答案.docx VIP
- 《GBT 5336-2022汽车车身修理技术条件》最新解读.pptx
- 中国台球协会技能等级考试中式台球考题说明.pdf VIP
- 国开 电大计算机应用基础 终结性考试试题及答案.docx VIP
- GBT3798-2021 汽车大修竣工出厂技术条件.pdf VIP
- 《中国现代文学专题》期末复习指导_综合练习题及答案.doc VIP
- 化学方程式配平万能解法解析.docx VIP
- 风电基础工程清单报价汇总表.pdf VIP
- 2024年曲阜师范大学成教《计算机控制技术》期末考试复习试题.pdf VIP
文档评论(0)