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,下面就介绍一种反射的方法来实现更好的工厂模式。下图是运行结果

  • 相关阅读:
    %2d
    将块中的文字设置成属性,即实现块中文字可拖动的功能
    获得块参照的插入点方法
    排序
    将几个实体对象变成一个块
    对克隆实体的类型转换
    对实体的克隆
    递归-顺序输出任意正整数各位
    递归-汉诺塔
    递归-最大公约数
  • 原文地址:https://www.cnblogs.com/mugglean/p/8853182.html
Copyright © 2011-2022 走看看