- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)