第2章简单工厂模式探析.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 简单工厂模式(Simple Factory) (静态工厂方法模式(Static Factory Method));创建型模式;创建型模式;工厂模式; 如何使用接口? 假设有一个接口Api,然后有一个类Impl实现它,在客户端怎么用这个接口呢?;通常都是在客户端创建一个Impl的实例,把它赋值给一个Api接口类型的变量,然后客户端就可以通过这个变量来操作接口的功能;public?interface?Api?{?????? public?void?test1(String?s);?? }?? public?class?Impl?implements?Api{???? ??public?void?test1(String?s)?{ ???????System.out.println(The?input?s==+s);?????? }?? }?? public?class?Client?{????? ?public?static?void?main(String[]?args)?{??????? ???Api?api?=?new?Impl();? api.test1(测试!); ??????} ??}??;Api?api?=?new?Impl();? 在客户端调用的时候,客户端不但知道接口,同时还知道具体的实现就是Impl。而接口的思想是“封装隔离”,而Impl这个实现类,应该是被接口Api封装并同客户端隔离开的,也就是说,客户端根本就不应该知道具体的实现类是Impl。;问题描述: 在Java编程中,出现只知接口而不知实现,该怎么办?;简单工厂模式(Simple Factory) (静态工厂方法(Static Factory Method)); 提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类、具体类;分析上面的问题,虽然不能让模块外部知道模块内的具体实现,但是模块内部是可以知道实现类的,而且创建接口是需要具体实现类的 是否可以在模块内部新建一个类,在这个类里面来创建接口,然后把创建好的接口返回给客户端,这样外部应用就只需要根据这个类来获取相应的接口对象,然后就可以操作接口定义的方法了;通过Simple Factory类生产产品,而对客户端隐藏产品产生的细节 实作时定义一个产品接口,并透过特定静态方法来建立成品 Simple Factory类根据传入的参数决定创建出哪一种产品类的实例 一个工厂类封装很多类的实例化(同一接口);简单工厂模式;简单工厂模式的类图结构UML;工厂类角色Creator:工厂类在客户端的直接调用下,创建产品对象并返回该对象;public interface Product { } public class ConcreteProduct implements Product { public ConcreteProduct(){} } public class Creator { public Product factory() {  return new ConcreteProduct(); } } ;使用简单工厂重写前面的示例;1)接口Api和实现类Impl都和前面的示例一样 2)新创建一个简单工厂的对象,示例代码 //工厂类,用来创造Api对象? public?class?Factory?{?? ????public?static?Api?createApi(){?? ????????return?new?Impl();?? ????}?? }??;3)使用简单工厂 public?class?Client?{?? ????public?static?void?main(String[]?args)?{?????????//重要改变,没有new?Impl()了,取而代之 Factory.createApi()?? Api?api?=?Factory.createApi();?????????? api.test1(测试!); ?}?? }??;例 1; ; ; ; ; ; ; ; 有一个描述你的后花园的系统,在你的后花园里有各种的花,但还没有水果。你现在要往你的系统里引进一些新的类,用来描述下列的水果: 葡萄 Grapes 草莓 Strawberry 萍果 Apple ;;作为小花园的主人兼园丁,也是系统的一部分,自然要由一个合适的类来代表,这个类就FruitGardener类。 ;园丁的工

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档