前言:📫 作者简介:小明java问道之路,专注于研究计算机底层,就职于金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的设计和架构📫
🏆 Java领域优质创作者、阿里云专家博主、华为云享专家🏆
🔥 如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦
本文导读
简单工厂模式/静态工厂模式讲解与代码实例
一、简单(静态)工厂模式
简单(静态)工厂模式:用一个专业类(工厂类)来负责一种产品的对象创建。
做法与好处:
1、把对象的创建和使用分开
2、将生产过程集中后,便于集中管理(增删改)
3、当实体类有变动时,使用者不需要再去修改代码
具体代码实现:
二、构件步骤
第一步:建包、建立静态工厂类
第二步:创建类型接口与实体类
/*** 水果接口*/publicinterfaceFruit { intprice(); voiddraw(); }
importcom.enjoy.entity.Fruit; /*** 桔子*/publicclassBananaimplementsFruit { privateintprice=60; publicintprice() { returnprice; } publicvoiddraw() { System.out.print("仙人蕉"); } publicvoidsetPrice(intprice) { this.price=price; } }
importcom.enjoy.entity.Fruit; /*** 桔子*/publicclassOrangeimplementsFruit { privateStringname=""; privateintprice=70; publicOrange(Stringname,intprice){ this.price=price; this.name=name; } publicintprice() { returnprice; } publicvoiddraw() { System.out.print("砂糖桔"); } publicvoidsetPrice(intprice) { this.price=price; } }
第三步:创建静态工厂
importcom.enjoy.entity.Fruit; importcom.enjoy.entity.fruit.Banana; importcom.enjoy.entity.fruit.Orange; /*** 简单工厂模式 --- 静态工厂模式*/publicclassStaticFactory { publicstaticfinalintTYPE_ORANGE=1;//桔子publicstaticfinalintTYPE_BANANA=2;//香蕉/*** 单方法工厂*/publicstaticFruitgetFruit(inttype) { if (TYPE_ORANGE==type) { returnnewOrange("Peter", 80); } elseif (TYPE_BANANA==type) { returnnewBanana(); } returnnull; } /*** 多方法工厂*/publicstaticFruitgetFruitOrange() { returnnewOrange("Peter", 80); } publicstaticFruitgetFruitBanana() { returnnewBanana(); } }
第四步:创建静态工厂用户端
importcom.enjoy.entity.Fruit; /*** Peter吃苹果*/publicclassStaticFactoryClient { publicstaticvoidmain(String[] args) { peterdo(); jamesdo(); } // 送给Peterpublicstaticvoidpeterdo() { // 我们无需提供具体的子类类名,只需要提供一个字符串即可得到相应的实例对象。Fruitfruit=StaticFactory.getFruit(StaticFactory.TYPE_BANANA); fruit.draw(); System.out.println("-----------------"); } // 送给jamespublicstaticvoidjamesdo() { Fruitfruit=StaticFactory.getFruitBanana(); fruit.draw(); System.out.println("-----------------"); } }