zoukankan      html  css  js  c++  java
  • 简单工厂模式--java代码实现

    简单工厂模式

      工厂,生产产品的场所。比如农夫山泉工厂,生产农夫山泉矿泉水、茶π等饮料。矿泉水和茶π都属于饮料,都具有解渴的功能,但是每种饮料给人的感觉是不一样的。矿泉水和茶π在Java中相当于子类,饮料相当于父类。

      简单工厂模式,又叫静态工厂模式,在Java中专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。我们将水果园比作一个工厂,可以生产苹果,香蕉等水果。每一个苹果或香蕉都是一个实例,他们的父类都是水果。

      下面用Java语言实现简单工厂模式

    1.简单工厂模式示意图

     

     

     

     

     

     

     

     

     

    2.创建Fruit接口、Apple类和Banana类

    Fruit(interface):

    //水果类
    public interface Fruit {
        public void get();
    }

    Apple类:

    //苹果类
    public class Apple implements Fruit{
        //实现并重写父类的get()方法
        public void get() {
            System.out.println("采集苹果");
        }
    }

    Banana类:

    //香蕉类
    public class Banana implements Fruit{
        //实现并重写父类的get()方法
        public void get() {
            System.out.println("采集香蕉");
        }
    }

    3.创建水果园,即工厂类,来生产各种水果

    FruitFactory:

    注意:这里将工厂类和所创建的子类放在同一个包中,方便调用。

    package simpleFactory;
    //水果园,水果工厂类
    public class FruitFactory {    
        /**
         * @param 不同水果的类名称
         * @return 水果类
         */
        public static Fruit getFruit(String type) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
            /*这里通过反射的方式获取到水果子类的字节码,即类对象,通过类对象的newInstance()方法创建水果子类
            实例*/
            Class fruit = Class.forName(FruitFactory.class.getPackage().getName()+"."+type);
            return (Fruit) fruit.newInstance();
        }
    }

    4.现在开始生产水果,创建实例,我们另外建立一个类

    MainClass:

    package simpleFactory;
    
    public class MainClass {
        public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
            //通过调用工厂类的静态方法getFruit,创建水果的子类实例。
            Fruit apple = FruitFactory.getFruit("Apple");
            Fruit banana = FruitFactory.getFruit("Banana");
            apple.get();
            banana.get();
        }
    }

    5.结果:

    6.总结:

      模式来源于生活,简单工厂模式,是一种比较容易理解模式,这种模式在很多框架中都有应用,比如Spring框架中创建实例时,Mybatis中的SqlSessionFactory等。这里通过生活中简单实例,实现简单工厂模式。

      参考B站视频https://www.bilibili.com/video/av34162848

  • 相关阅读:
    hdu 1695 GCD 欧拉函数 + 容斥
    E. Xenia and Tree 分块 + LCA
    二分图匹配 + 构造 E. Arpa’s overnight party and Mehrdad’s silent entering
    Win系统如何修改远程桌面端口3389
    centos7下使用selenium实现文件上传
    windows下tesseract-ocr的安装及使用
    windows下pycharm输入法跟随设置
    django 外键使用select html
    xstart访问centos7
    Centos7 安装VNC实现远程桌面
  • 原文地址:https://www.cnblogs.com/peter_zhang/p/SimpleFactory.html
Copyright © 2011-2022 走看看