zoukankan      html  css  js  c++  java
  • 常用设计模式-工厂模式

    1、简单工厂模式

    1.1、简单工厂模式缺点:每增加一款汽车都需要修改工厂类。违背开闭原则

    1.2、简单工厂模式代码

    /**
     * 简单工厂模式
     */
    public class CarFactory {
    
        public Car getCar(String type){
            if(type.equals("benz")){
                return new Benz();
            }else if(type.equals("hummer")){
                return new Hummer();
            }
            return null;
        }
    
    }

    2、工厂方法模式

    2.1、工厂方法模式特点:职责单一,只负责生产单一产品。

    2.2、工厂方法模式优点:避免简单工厂模式的缺点。新增一款汽车只需要新建一家工厂即可。符合开闭原则

    2.3、工厂方法模式代码

    /*
    *工厂接口
     */
    public interface CarFactory {
        Car createCar();
    }
    
    /**
    *宝马工厂生产宝马汽车
     */
    public class BMWFactory implements CarFactory {
        @Override
        public Car createCar() {
            return new BMWCar();
        }
    }

    3、抽象工厂模式

    3.1、抽象工厂模式特点:工厂负责生产旗下多个产品(产品族)

    3.2、抽象工厂模式代码

     todo

    4、工厂方法模式与抽象工厂模式区别

    工厂方法模式:该工厂只生产单一产品。

    抽象工厂模式:该工厂会生产多个产品(产品族),打比方:一个超级工厂里面分小工厂,工厂1生产轮胎、工厂2生产方向盘、工厂3生产:底盘等等。

    4.1、工厂方法模式代码

    /**
    *汽车接口
     */
    public interface Car {
        void driver();
    }
    
    
    /**
    *悍马汽车
     */
    public class Hummer implements Car {
        @Override
        public void driver() {
            return;
        }
    }
    
    
    /**
    * 汽车工厂接口
     * 新增汽车工厂实现此接口即可
     */
    public interface CarFactory {
        Car createCar();
    }
    
    
    /**
    * 悍马工厂
     */
    public class HummerFactory implements CarFactory{
        @Override
        public Car createCar(){
            return new Hummer();
        }
    }

     4.2、抽象工厂模式代码

    /*
    *工厂生产;车胎、方向盘、底盘等汽车配置(一族产品)
    * 汽车工厂接口
    * 新增汽车工厂实现此接口即可
    */
    public interface CarFactory {
        Tyre createTyre();
        Wheel ceateWheel();
        Chassis createChassis();
    }
    
    
    /**
     * 奔驰工厂生产奔驰汽车配件(奔驰一系列产品)
     */
    public class BenzFactory implements CarFactory {
        @Override
        public Tyre createTyre() {
            return new BenzTyre();
        }
    
        @Override
        public Wheel ceateWheel() {
            return new BenzWheel();
        }
    
        @Override
        public Chassis createChassis() {
            return new BenzChassis();
        }
    }
    
    /**
    * 悍马工厂生产悍马汽车配件(悍马一系列产品)
     */
    public class HummerFactory implements CarFactory{
        @Override
        public Tyre createTyre() {
            return new HummerTyre();
        }
    
        @Override
        public Wheel ceateWheel() {
            return new HummerWheel();
        }
    
        @Override
        public Chassis createChassis() {
            return new HummerChassis();
        }
    }

     

     5、抽象工厂模式什么情况下会用到?

    5.1、抽象工厂模式会使用上:需要生产公司旗下的一系列产品(产品族)。同时其它公司旗下也会生产同样一系列产品。只是两个工厂生产出来品牌不一样。

    5.2、抽象工厂模式常见应用:oracle和mysql数据库应用时,系统可以会替换数据库,这时候抽象工厂模式就派上用场了。

  • 相关阅读:
    springmvc+mybatis多数据源切换
    Tomcat 8.5 配置自动从http跳转https
    Tomcat 8.5 配置 域名绑定
    本地测试Tomcat配置Https访问
    Spring boot
    解决IDEA16闪退的问题
    cef
    spring-boot学习资料
    oracle 表空间不足解决办法
    oracle导出表的办法
  • 原文地址:https://www.cnblogs.com/chenweichu/p/10164605.html
Copyright © 2011-2022 走看看