Java学习day23-工厂方法(FactoryMethod)

混江龙づ霸主 提交于 2020-03-21 12:02:33

一、工厂方法(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();
     }
}

打印结果为:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!