美文网首页
简单工厂模式

简单工厂模式

作者: yexue | 来源:发表于2017-08-31 15:17 被阅读20次

    我喜欢简单、粗犷、暴力、有说服力的方式 ヾ(⌐■_■)ノ
    笔记一下,不能入围GOF的23种设计模式的第24种设计模式
    学习地址,膜拜大神

    定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。
    简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

    既然是工厂对吧!那就开始生产东西了,以下汽车为例

    package com.yexue.example.design_mode.single_factory;
    
    public class Test {
        public static void main(String[] args) {
            /**
             * 需求:我要一辆宝马
             * 实现:调用汽车工厂生产宝马
             */
            ICar car = CarFactory.createCar("BaoMa");
            System.out.println(car.biaozhi());
        }
    
    }
    

    然后找到汽车工厂准备生产汽车了

    package com.yexue.example.design_mode.single_factory;
    /***
     * 简单工厂模式
     * @author yexue
     * @expl 车的工厂类
     * @time 2017年8月31日 下午2:38:00
     */
    public class CarFactory {
        private CarFactory(){}
        
        /**
         * 以宝马和红旗为例
         * @param type
         * @return
         */
        public static ICar createCar(String type) {
            if(type.equals("BaoMa")){//宝马
                return new BaoMaCar();
            }else if(type.equals("HongQi")){
                return new HongQiCar();//红旗
            }else{
                throw new RuntimeException();
            }
        }
    
    }
    
    

    生产汽车的按照汽车的样子来生产
    汽车模型

    package com.yexue.example.design_mode.single_factory;
    
    /**
     * 简单工厂模式
     * 
     * @author yexue
     * @expl 车模型
     * @time 2017年8月31日 下午2:36:52
     */
    public interface ICar {
        /**
         * 车标
         */
        public String biaozhi();
        //其他车的属性
        //车门、大灯、玻璃、座位、轮胎、发动机....
    
    }
    

    按照车模型产出来的汽车

    宝马

    package com.yexue.example.design_mode.single_factory;
    /**
     * 简单工厂模式
     * @author yexue
     * @expl 宝马
     * @time 2017年8月31日 下午2:57:26
     */
    public class BaoMaCar implements ICar{
    
        @Override
        public String biaozhi() {
            return "宝马";
        }
    
    }
    
    

    红旗

    package com.yexue.example.design_mode.single_factory;
    /**
     * 简单工厂模式
     * @author yexue
     * @expl 红旗
     * @time 2017年8月31日 下午2:56:30
     */
    public class HongQiCar implements ICar{
        @Override
        public String biaozhi() {
            return "红旗";
        }
        
    
    }
    

    就是这么粗犷、暴力


    相关文章

      网友评论

          本文标题:简单工厂模式

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