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

    该模式比较简单,注释比较详尽,在此不多说明,直接看代码:

    /*
     * Copyright (c) 2017. Xiaomi.Co.Ltd All rights reserved
     */
    
    package com.pt.factory.simple;
    
    /**
     * @description 抽象汽车类
     * @author panteng
     * @date 17-2-3.
     */
    public abstract class AbstractCar {
        /** 品牌 */
        protected String brand;
        /** 油耗 */
        protected float oilWear;
    
        /** 展示外观 */
        public abstract void showAppearance();
    }
    AbstractCar
    /*
     * Copyright (c) 2017. Xiaomi.Co.Ltd All rights reserved
     */
    
    package com.pt.factory.simple;
    
    /**
     * @description 奥迪汽车实体类
     * @author panteng
     * @date 17-2-3.
     */
    public class AodiCar extends AbstractCar {
    
        /**
         * @description 展示外观
         * @param
         * @return
         * @throws
         */
        public void showAppearance() {
            System.out.println("我是奥迪汽车");
        }
    }
    AodiCar
    /*
     * Copyright (c) 2017. Xiaomi.Co.Ltd All rights reserved
     */
    
    package com.pt.factory.simple;
    
    /**
     * @description 大众汽车实体类
     * @author panteng
     * @date 17-2-3.
     */
    public class DaZhongCar extends AbstractCar {
        /**
         * @description 展示外观
         * @param
         * @return
         * @throws
         */
        public void showAppearance() {
            System.out.println("我是大众汽车");
        }
    }
    DaZhongCar
    /*
     * Copyright (c) 2017. Xiaomi.Co.Ltd All rights reserved
     */
    
    package com.pt.factory.simple;
    
    /**
     * @description 简单工厂模式示例代码
     *              通过定义一个类来负责创建其他类,被创建的实例通常具有共同的父类或实现了同一个接口
     *              优点:对于使用者来说,无需了解对象是如何创建的,可以更加直接方便的拿到对象,可以
     *                  方便的将一类对象统一起来,简化客户端操作
     *              缺点:工厂类出问题,所有调用工厂创建对象的客户端都会出问题;
     *                  通常来说,简单工厂模式只能用于创建某一类产品,不可以创建几类产品。
     *              JDBC就使用了简单工厂模式,将不同的数据库统一起来
     * @author panteng
     * @date 2017-02-03
     *
     * @description 简单工厂模式的实现
     * @modifier panteng
     * @date 2017-02-03
     */
    
    public class SimpleFactoryCase {
    
        /**
         * 生产汽车的方法
         * @param brand 汽车品牌种类
         * @return 汽车对应实例
         */
        public AbstractCar getCar(String brand) {
            if ("Aodi".equals(brand)) {
                return new AodiCar();
            } else if ("DaZhong".equals(brand)) {
                return new DaZhongCar();
            } else {
                return null;
            }
        }
    }
    SimpleFactoryCase

    测试类

    /*
     * Copyright (c) 2017. Xiaomi.Co.Ltd All rights reserved
     */
    
    package com.pt.factory.simple;
    
    import org.junit.Before;
    import org.junit.Test;
    
    /**
     * @description 简单工厂模式测试类
     * @author panteng
     * @date 2017-02-03.
     */
    public class SimpleFactoryCaseTest {
    
        @Before
        public void setUp() throws Exception {
            System.out.println("start... ...");
        }
    
        @Test
        public void getCarTest() {
            SimpleFactoryCase simpleFactory = new SimpleFactoryCase();
            AodiCar aodiCar = (AodiCar) simpleFactory.getCar("Aodi");
            DaZhongCar daZhongCar = (DaZhongCar) simpleFactory.getCar("DaZhong");
            aodiCar.showAppearance();
            daZhongCar.showAppearance();
        }
    }
    SimpleFactoryCaseTest

    ===========================设计模式系列文章=========================

    简单工厂模式

    工厂方法模式

    抽象工厂模式

    建造者模式

    原型模式

    适配器模式

    桥接模式

    装饰模式

    代理模式

    组合模式

    门面模式

    享元模式

    责任链模式

    命令模式

    中介者模式

    备忘录模式

    观察者模式

    状态模式

    策略模式

    模板方法模式

    访问者模式

  • 相关阅读:
    相机标定 和 单应性矩阵H
    全景视频拼接关键技术
    OpenCV图像变换(仿射变换与透视变换)
    用非数学语言讲解贝叶斯定理
    (二)SMO算法
    (一)SVM原理
    什么是赋范线性空间、内积空间,度量空间,希尔伯特空间
    决策树算法(五)——处理一些特殊的分类
    V8学习资源
    perforce 学习资源
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/6363096.html
Copyright © 2011-2022 走看看