• 4.工厂模式


    1.工厂模式可以把对象的创建和使用分离出来,降低代码的耦合性。

    (1)简单工厂模式

    简单工厂可以实现对象的创建和对象的使用分离,由专门的工厂类负责对象的创建,缺点在于工厂类不够灵活,如果需要增加新的产品需要修改工厂类,而且产品较多时,工厂方法代码逻辑将会非常复杂。
    package com.java.dp.factory;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 17:27
     * @desc  生产线接口
     */
    public interface BuildLine {
    
        void  build();
    }
    package com.java.dp.factory;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 17:30
     * @desc 食品生产线
     */
    public class FoodLine implements BuildLine {
        @Override
        public void build() {
            System.out.println("-----------生产食品--------------");
        }
    }
    package com.java.dp.factory;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 17:28
     * @desc   服装生产线
     */
    public class ClothesLine implements BuildLine {
        @Override
        public void build() {
            System.out.println("-----------生产衣服------------");
        }
    }
    package com.java.dp.factory;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 17:32
     * @desc  对象工厂
     */
    public class SimpleFactory {
    
        public static BuildLine getFactory(String name) {
            if ("food".equals(name)) {
                return new FoodLine();
            }
            if ("clothes".equals(name)) {
                return new ClothesLine();
            }
            return null;
        }
    }
    BuildLine foodLine = SimpleFactory.getFactory("food");
     foodFactory.build();
    
     BuildLine clothesLine = SimpleFactory.getFactory("clothes");
     clothesFactory.build();

     (2)工厂模式

    工厂模式通过核心的工厂类来负责创建工厂,具体的产品由相应的工厂去实现,这样的做的好处是如果需要增加新的产品,只需要相应的工厂,创建新的核心工厂类即可,对原来的代码无需修改,只需要维护新代码即可。

    实现是在简单工厂的基础上新增核心工厂接口和实现。

    package com.java.dp.factory;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 18:03
     * @desc   核心工厂接口
     */
    public interface Factory {
    
         BuildLine defineBuildLine();
    }
    package com.java.dp.factory;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 18:05
     * @desc  服装的核心工厂
     */
    public class ClothesFactory implements Factory {
        @Override
        public BuildLine defineBuildLine() {
            return new ClothesLine();
        }
    }

    Spring Ioc 容器的实现原理就是工厂模式,下面的调用就是模仿IOC容器的实现原理

    package com.java.dp.factory;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @Author lizhilong
     * @create 2019/12/2 17:34
     * @desc
     */
    public class FactoryMain {
    
        private  static Map beanMap = new HashMap();
        static {
            try {
               beanMap.put("food",Class.forName("com.java.dp.factory.FoodFactory").newInstance());
               beanMap.put("clothse",Class.forName("com.java.dp.factory.ClothesFactory").newInstance());
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
             Factory foodFactory  = (FoodFactory) beanMap.get("food");
             foodFactory.defineBuildLine().build();
    
             Factory clothseFactory = (Factory) beanMap.get("clothse");
             clothseFactory.defineBuildLine().build();
        }
    }
    -----------生产食品--------------
    -----------生产衣服------------
  • 相关阅读:
    14_部署LNMP环境、构建LNMP平台、地址重写
    13_搭建Nginx服务器、配置网页认证、基于域名的虚拟主机、ssl虚拟主机
    12_rsync+SSH同步
    11_DNS子域授权、分离解析、缓存DNS服务器
    10_自定义yum仓库、源码编译安装
    09_parted分区工具、交换分区、链路聚合
    08_简单MariaDB数据库的管理
    bzoj1396
    bzoj4154
    bzoj3489
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/11975616.html
Copyright © 2020-2023  润新知