工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法模式结构图:
项目需求,创建一个雷锋工厂,大学生可以去帮助别人,志愿者也可以帮助别人做事情。
1:创建一个雷锋类,具有帮助别人扫地,洗衣,买米的功能。
package FactoryMethodModel; public class LeiFeng { public void Sweep(){ System.out.println("扫地"); } public void Wash(){ System.out.println("洗衣"); } public void BuyRice(){ System.out.println("买米"); } }
2:创建一个学雷锋的大学生的类,继承雷锋类,可增加自己的功能。
package FactoryMethodModel; /** * 学雷锋的大学生 * @author 我不是张英俊 * */ public class UniversityStudent extends LeiFeng { //里面可以增加专属大学生的功能 }
3:创建一个社区志愿者的类,继承雷锋类。
package FactoryMethodModel; /** * 学雷锋的社区人员 * @author 我不是张英俊 * */ public class Volunteer extends LeiFeng { }
4:创建一个雷锋工厂接口。
package FactoryMethodModel; /**雷锋工厂的总接口。 * @author 我不是张英俊 * */ interface LeiFengFactory { LeiFeng CreatLenFeng(); }
5:创建学雷锋的大学生的工厂。
package FactoryMethodModel; /** * 学雷锋的大学生工厂 * @author 我不是张英俊 * */ public class UniversityStudentFactory implements LeiFengFactory { @Override public LeiFeng CreatLenFeng() { return new UniversityStudent(); } }
6:创建学雷锋的志愿者工厂。
package FactoryMethodModel; /** * 学雷锋的社区制志愿者 * @author 我不是张英俊 * */ public class VolunteerFactory implements LeiFengFactory { @Override public LeiFeng CreatLenFeng() { // TODO Auto-generated method stub return new Volunteer(); } }
7:测试类
package FactoryMethodModel; /** * 建立一个雷锋工厂,大学生可以以雷锋的名义起帮助别人,社区志愿者也可以。 * 工厂化模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 * 工厂方法使一个类的实例化延迟到其子类。 * @author 我不是张英俊 * */ public class Test { public static void main(String[] args) { LeiFengFactory factory=new UniversityStudentFactory(); LeiFeng student =factory.CreatLenFeng(); student.BuyRice(); student.Sweep(); student.Wash(); } }
8:控制台
买米
扫地
洗衣
总结:简单工厂方法违背了开放-封闭原则,而工厂方法克服了此问题,当需要增加新的,例如小学生学雷锋的时候,工厂方法增加新的小学生工厂即可,然后再测试类中调用即可。
工厂方法模式还保持了封装对象创建过程的有点。使得要更换对象的时候,不需要做打的改动就可以实现,降低了客户程序与产品对象的耦合,工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂模式保存了简单工厂模式的有点,并且克服了缺点。但缺点是,没增加一个产品,就必须增加一个工厂类,增加的额外的开发量。
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整