zoukankan      html  css  js  c++  java
  • 工厂模式_简单工厂模式

    一、工厂模式作用
      实现了创建者和调用者的分离。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

    二、工厂模式的核心本质
      实例化对象,用工厂方法代替new操作。

    三、工厂模式的详细分类

      3.1 简单工厂模式

        简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。对于增加新产品(新功能)必须要修改源程序!
        简单工厂模式的两种实现方式:

        3.1.1 第一种方式

        车类型接口:  

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:车类型接口
     * @author aeon(qq:1584875179)
     */
    public interface Car {
        void run();
    }

        宝马类:

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:宝马类
     * @author aeon(qq:1584875179)
     *
     */
    public class BMW implements Car {
    
        @Override
        public void run() {
            System.out.println("宝马在跑!");
        }
    
    }

        比亚迪类:  

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:比亚迪类
     * @author aeon(qq:1584875179)
     *
     */
    public class Byd implements Car {
    
        @Override
        public void run() {
            System.out.println("比亚迪在跑!");
        }
    
    }

        生产车的工厂类:  

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:生产车的工厂类
     * @author aeon(qq:1584875179)
     *
     */
    public class CarFactory {
        public static Car creatCar(String type){
            if("bmw".equals(type)){
                return new BMW();
            }else if("byd".equals(type)){
                return new Byd();
            }else{
                return null;
            }
        }
    }

        测试在没有工厂模式下的调用过程:  

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:测试在没有工厂模式下的调用过程
     * @author aeon(qq:1584875179)
     *
     */
    public class TestNoFactory {
    
        public static void main(String[] args) {
            Car car1=new BMW();
            Car car2=new Byd();
            car1.run();
            car2.run();
        }
    }

        测试结果截图如下:

        

        测试简单工厂模式下的调用类:  

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:测试简单工厂模式
     * @author aeon(qq:1584875179)
     *
     */
    public class TestEasyFactory {
    
        public static void main(String[] args) {
            Car car1=CarFactory.creatCar("bmw");
            Car car2=CarFactory.creatCar("byd");
            car1.run();
            car2.run();
        }
    
    }

        测试结果如下:

        

        3.1.2 第二种方式(工厂类写法)      

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:简单工厂模式的第二种写法
     * @author aeon(qq:1584875179)
     *
     */
    public class CarFactory2 {
        public static Car createBMW(){
            return new BMW();
        }
        public static Car createByd(){
            return new Byd();
        }
    }

        测试类:    

    package edu.aeon.model.factory.easyfactory;
    /**
     * [说明]:测试简单工厂模式第二种写法
     * @author aeon(qq:1584875179)
     *
     */
    public class TestEasyFactory2 {
    
        public static void main(String[] args) {
            Car car1=CarFactory2.createBMW();
            Car car2=CarFactory2.createByd();
            car1.run();
            car2.run();
        }
    
    }

        测试结果截图如下:

        

      3.2 工厂方法模式    

       

      3.3抽象工厂模式

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    Solr7.7安装,配置中文分词 IKAnalyzer分词
    Solr7.7安装,链接数据库并导入数据,初级导入数据
    Solr7.7安装,过浏览器可以看到Solr界面,进行可视化操作
    Solr7.7安装,JDK安装
    Jquery 全局错误处理
    各种问题
    Elmah 数据库脚本
    LINQ&EF任我行(二)--LinQ to Object
    css3 animatehue属性
    Lync二次开发关于Lync启动退出问题
  • 原文地址:https://www.cnblogs.com/aeon/p/10301657.html
Copyright © 2011-2022 走看看