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数据库应用时,系统可以会替换数据库,这时候抽象工厂模式就派上用场了。

  • 相关阅读:
    adodb.stream文件操作类详解
    Html中Label标记的作用和使用介绍
    正则表达式的威力轻松消除HTML代码
    只需一行代码就能让IE 6崩溃
    码农干货系列【17】Wind.js与Promise.js
    码农干货系列【3】割绳子(cut the rope)制作点滴:旋转(rotation)
    HTML5 Canvas开发者和读者的福音
    码农干货系列【8】世界上最简单的3D渲染(no webgl)
    码农干货系列【18】getting started with Promise.js(总)
    ProgressForm
  • 原文地址:https://www.cnblogs.com/chenweichu/p/10164605.html
Copyright © 2011-2022 走看看