一、工厂方法(FactoryMethod)
FactoryMethod模式是设计模式中应用最为广泛的模式,在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。FactoryMethod解决的就是这个问题,它通过面线对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
实例:
具体实现:1.选创建一个宝马车的接口
package day15; /** * 宝马车的产品接口 * */ public interface BWM { //产品的信息介绍 //车的发动方式等等 void showInfo(); } /** * 构建具体的车的类 * */ class BWM3 implements BWM{ public void showInfo() { // TODO Auto-generated method stub System.out.println("这个是宝马三系车"); } } class BWM5 implements BWM{ public void showInfo() { // TODO Auto-generated method stub System.out.println("这个是宝马五系车"); } } class BWM7 implements BWM{ public void showInfo() { // TODO Auto-generated method stub System.out.println("这个是宝马七系车"); } }
2.再创建一个宝马车生产工厂的接口
package day15; /** * 这是汽车生产工厂接口 * */ public interface BWMFactory { BWM productBWM(); } /** * 实现具体车型生产的工厂 * 通过工厂把new对象隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其他合作开发人员的编程 * */ class BWM3Factory implements BWMFactory{ public BWM productBWM() { // TODO Auto-generated method stub System.out.println("生产3系宝马车"); System.out.println("改造3系宝马车,定名为3i"); return new BWM3(); } } class BWM5Factory implements BWMFactory{ public BWM productBWM() { // TODO Auto-generated method stub System.out.println("生产5系宝马车"); return new BWM5(); } } class BWM7Factory implements BWMFactory{ public BWM productBWM() { // TODO Auto-generated method stub System.out.println("生产7系宝马车"); return new BWM7(); } }
3.通过调用宝马车生产工厂的接口来实现
package day15; /** * 开发人员B的工作,不受开发人员A改动代码的影响 * */ public class Test2 { public static void main(String[] args){ BWM b3 = new BWM3Factory().productBWM(); b3.showInfo(); BWM b5 = new BWM5Factory().productBWM(); b5.showInfo(); BWM b7 = new BWM7Factory().productBWM(); b7.showInfo(); } }
打印结果为:
来源:https://www.cnblogs.com/su-peng/p/12537462.html