Factory Mode即工厂形式,是一种创立型设计形式。
工厂形式的外围现实是提供一个创立对象的接口,让调用者不须要关心详细要创立的对象的类是哪一个,只要要调用这个接口,就可以取得须要的对象。
这样,对象的创立与经常使用被解耦,参与了代码的灵敏性和可裁减性。
在实践运行中,工厂形式关键有三种外形:繁难工厂形式、工厂方法形式和形象工厂形式。
1. 繁难工厂形式:经过一个工厂类来治理一切对象的创立。
调用者只要要传入一个参数,工厂类就会依据这个参数创立并前往相应的对象。
这种形式的优势是调用者不须要关心对象的创立细节,缺陷是假设对象种类参与,工厂类就须要做相应的修正,违犯了开闭准则。
2. 工厂方法形式:定义一个用于创立对象的接口,让子类选择实例化哪一个类。
工厂方法使一个类的实例化延早退其子类。
这种形式的优势是参与了代码的裁减性,当须要参与新的对象时,只要要参与新的子类,而不须要修正已有的代码。
缺陷是假设对象种类过多,或者会造成系统中有少量的详细工厂类。
3. 形象工厂形式:提供一个接口,用于创立一系列相关或相互依赖的对象,而无需指定它们详细的类。
这种形式的优势是可以在一个工厂中创立多个对象,而且这些对象之间有必定的依赖相关,合乎实践开发中很多状况的需求。
缺陷是成功复杂度较高,须要创立多个工厂类和多个产品类。
总之,工厂形式是一种十分适用的设计形式,它可以有效地将对象的创立与经常使用解耦,提高代码的灵敏性和可裁减性。
在实践开发中,咱们可以依据详细的需求选用适合的工厂形式来成功。
Java IO流中触及到了装璜器形式、工厂形式、单例形式、适配器形式。
1、装璜器形式
Java IO流经常使用了装璜器形式,经过承袭和成功形象类或接口来裁减一个流的配置。
例如,BufferedInputStream和BufferedOutputStream都是装璜器类,它们为InputStream和OutputStream参与了缓冲配置。
2、工厂形式
Java IO流经常使用工厂形式来创立各种类型的流对象。
例如,FileInputStream和FileOutputStream都是经过工厂方法来创立的。
3、单例形式
在Java IO流中,有些流只能有一个实例,例如,规范输入流和规范输入流。
这些流经常使用了单例形式,确保只要一个实例可用。
4、适配器形式
Java IO流中的InputStreamReader和OutputStreamWriter是适配器形式的例子。
它们将字节流转换为字符流,以便启动文本解决。
Java IO流的罕用类
1、JDK所提供的一切流类位于包中,都区分承袭自以下四种形象流类。
2、InputStream:承袭自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。
3、OutputStream:承袭自OutputStream的流都是程序用于向外输入数据的,且数据单位都是字节(8位)。
4、Reader:承袭自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。
5、Writer:承袭自Writer的流都是程序用于向外输入数据的,且数据单位都是字符(16位)。
这里是第七人格的博客,小七在此欢迎您的莅临。
系列专栏:设计形式✈️本篇内容:工厂形式✈️本篇收录完整代码/diqirenge/des...楔子初入职场时,曾听到一个笑话:雷同一个配置,初级程序员须要一天,中级程序员两天,初级程序员则需一个星期。
这并不只仅是由于老程序员偷懒(只管他们必需会有点偷懒,哈哈),更关键的是他们对设计思维的深化了解。
阅历丰盛的程序员思考的不只仅是业务拓展性,还有程序的拓展性。
需求背景须要成功一个图片上行配置,逻辑繁难,行将图片上行到对象存储。
目前有两个服务商可供选用,区分是阿里云和腾讯云。
由于尚未确定经常使用哪一个,因此须要先启动对接。
他们提供的API各不相反,假定如下:剖析设计由于这两个接口的成功定义不同,因此最好形象出一个一致的接口,让子类成功自己的业务逻辑。
这样做的好处是,假设腾讯云有变卦,只要修正腾讯云子类;假设阿里云有变卦,只要修正阿里云子类。
这样,两个子类之间互不影响(满足繁多职责准则)。
此外,为了不让下层间接经常使用咱们这个一致的方法,咱们再形象一个类,让它选择经常使用哪种上行形式。
这相当于加了一层防腐,咱们称其为工厂类(创立者与详细的业务解耦)。
再思考一下拓展状况,假设以后又参与一种上行形式,比如华为云,那么咱们修正起来也十分繁难,只要参与一个子类即可,调用方无需扭转(满足开闭准则)。
UML图依据剖析设计,咱们可以先画一个繁难的UML图,前面将经过UML图启动编码。
模块称号factory模块/diqirenge/des...模块形容工厂形式代码示例代码成功1. 首先模拟出两个外部接口上行至oss上行至cos2. 而后定义一个用于创立对象的接口或形象类,让子类选择实例化哪一个类形象类上行子类 oss,承袭了形象类,并调用了上行至oss的方法上行子类 cos,承袭了形象类,并调用了上行至oss的方法3. 创立一个工厂类,其中蕴含一个用于创立产品对象的方法。
4. 编写测试方法5. 测试结果①口头testAli方法==========上行开局========== ali upload 入参: 阿里文件 ossId token ali 上行成功! 结果:AliOssUpDownloader upload success ==========上行完结========== ②口头testTencent方法==========上行开局========== tencent upload 入参: 腾讯文件 base64 appID appSecret 成功上行到腾讯云 结果:TencentUpDownloader upload success ==========上行完结========== 成功要点总结本文从模拟需求开局,带着读者一同窗习了工厂形式。
从上文可知,工厂形式其实十分繁难,只要把握三大成功要点即可。
因此,小七在上班中经常使用工厂形式的频率十分高。
但工厂形式普通不会独自经常使用,它的好同伴有战略形式、单例形式、模版形式等,前面小七都会讲到。
本文由博客一文多发平台 OpenWrite 颁布!
下一篇: 交付是什么上班 (交付是指什么)