美文网首页
Java 工厂模式

Java 工厂模式

作者: 索性流年 | 来源:发表于2021-02-09 09:19 被阅读0次

    文集地址

    一句话总结工厂模式

    • 创建你想要的对象,便是工厂模式

    概述

    • 工厂模式的目的是为了解耦,把对象的创建和使用过程的分开,简单来时一个对象想要调用另一个对象的方法,他只需要通过工厂直接调用,对象的创建了初始化交给工厂来处理

    • 工厂模式可以降低代码重复,如若一个对象的创建方式很复杂,每次创建多需要实现大量的代码,而且很多地方都能用到,就可以吧这个对象放在工厂统一管理,既能减少代码量,也利于后期维护。

    • 工厂模式有效的提高代码容错性,只要一个对象调用工厂方法成功,那么其他地方就不会出错。

    工厂模式分类

    • 简单工厂、抽象工厂、工厂方法、静态工厂

    应用场景小案例

    • 一家水果公司,每天需要生产不同种类的水果,但是一个工厂只能生产一种水果,为了满足客户要求,他只能建造不同的水果工厂,用来生产不同的水果,给客户

    实现案例

    • 生产水果接口
    /**
     * 生产水果接口
     *
     * @author liunian
     * @date 2021/2/5 17:15
     */
    public interface FruitsCompany {
        /**
         * 生产水果
         */
        void sendFruits();
    }
    
    
    • 香蕉工厂
    /**
     * 生产香蕉
     * @author liunian
     * @date 2021/2/5 17:22
     */
    public class BananaFruits implements FruitsCompany {
        @Override
        public void sendFruits() {
            System.out.println("生产香蕉");
        }
    }
    
    
    • 苹果工厂
    /**
     * 生产苹果
     * @author liunian
     * @date 2021/2/5 17:15
     */
    public class appleFruits implements FruitsCompany {
        @Override
        public void sendFruits() {
            System.out.println("生产苹果");
        }
    }
    
    

    简单工厂

    • 水果生产工厂
    
    /**
     * @author liunian
     * @date 2021/2/5 17:24
     */
    public class FruitsCompanyFactory {
    
        /**
         * 生产水果
         * @param type 水果类型
         */
        public FruitsCompany produceFruit(String type){
            switch (type){
                case "apple":
                    return new appleFruits();
                case "banana":
                    return new BananaFruits();
                default:
                    return null;
            }
        }
    
    }
    
    
    • 生产水果
    /**
     * @author liunian
     * @date 2021/2/5 17:27
     */
    public class FactoryApp {
        public static void main(String[] args) {
            FruitsCompanyFactory fruitsCompanyFactory = new FruitsCompanyFactory();
            FruitsCompany apple = fruitsCompanyFactory.produceFruit("apple");
            apple.sendFruits();
            FruitsCompany banana = fruitsCompanyFactory.produceFruit("banana");
            banana.sendFruits();
        }
    }
    
    

    工厂方法

    • 水果工厂
    
    /**
     * @author liunian
     * @date 2021/2/5 17:24
     */
    public class FruitsCompanyFactory02 {
    
        /**
         * 生产苹果
         *
         * @return 苹果工厂
         */
        public FruitsCompany produceApple() {
            return new appleFruits();
        }
    
        /**
         * 生产香蕉
         *
         * @return 香蕉工厂
         */
        public FruitsCompany produceBanana() {
            return new BananaFruits();
        }
    
    
    }
    
    
    • 生产水果
    /**
     * @author liunian
     * @date 2021/2/5 17:27
     */
    public class FactoryApp {
    
        public static void main(String[] args) {
            FruitsCompanyFactory02 fruitsCompanyFactory02 = new FruitsCompanyFactory02();
            FruitsCompany apple = fruitsCompanyFactory02.produceApple();
            apple.sendFruits();
            FruitsCompany banana = fruitsCompanyFactory02.produceBanana();
            banana.sendFruits();
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 工厂模式

          本文链接:https://www.haomeiwen.com/subject/salnactx.html