zoukankan      html  css  js  c++  java
  • Java的工厂模式(一)

      Java的工厂模式在框架中是用的到很多的,所谓的工厂模式,其实也就是用一个接口来创建对象,把实例化的工作推迟到子类去实现。这样在主函数中就可以直接创建一个工厂类,再通过这个工厂类实现操作。

      假设有一个水果工厂,工厂可以生产香蕉,生产苹果,就可以写成如下代码:

      FruitInterface.java

    package com.muggle.project;
    
    //水果接口
    public interface FruitInterface {
    
        public void produce();
    }

     

      下面是要生产的香蕉类和苹果类:

      Banana.java

    package com.muggle.project;
    //生产一个香蕉
    public class Banana implements FruitInterface {
    
        @Override
        public void produce(){
            // TODO Auto-generated method stub
            System.out.println("--------生产了一个香蕉-------");
    
        }
    
    }

      Apple.java

    package com.muggle.project;
    
    public class Apple implements FruitInterface {
    
        @Override
        public void produce() {
            // TODO Auto-generated method stub
            System.out.println("--------生产了一个苹果-------");
    
        }
    
    }

     再定义一个水果工厂类

      FruitInterface.java

    package com.muggle.project;
    //水果工厂
    public class FruitFactory {
    
        public FruitInterface getFruit(String key) {
            if("Banana".equals(key)) {
                return new Banana();        }
            else if ("Apple".equals(key)) {
                return new Apple();
            }
            else {
                return null;
            }
        }
    }

      最后就可以通过水果工厂生产香蕉和苹果了

      TestDrive.java

    package com.muggle.project;
    
    public class TestDrive {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
    /*        不用工厂模式的原始方法
    */
    //        FruitInterface banana=new Banana();
    //        banana.produce();
    //        FruitInterface apple=new Apple();
    //        apple.produce();
            
            FruitFactory factory =new FruitFactory();
            FruitInterface banana=factory.getFruit("Banana");
            banana.produce();
        }
    
    }

      结果如下所示,通过这种方法就能实现一个简单的工厂,但是也有一个弊端:就是新加类的时候需要一直else if,下面就介绍一种反射的方法来实现更好的工厂模式。下图是运行结果

  • 相关阅读:
    linux文件管理之查找
    linux文件管理之管道与重定向
    linux文件管理之proc文件系统
    linux文件管理之bash shell
    linux进程管理之作业控制
    linux进程管理之优先级
    linux进程管理之信号控制
    Inno Setup制作最简单的安装程序
    intel汇编笔记
    WINDOWS程序设计对话框加载显示bmp图像及刷新
  • 原文地址:https://www.cnblogs.com/mugglean/p/8853182.html
Copyright © 2011-2022 走看看