该模式比较简单,注释比较详尽,在此不多说明,直接看代码:
/* * 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(); }
/* * 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("我是奥迪汽车"); } }
/* * 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("我是大众汽车"); } }
/* * 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; } } }
测试类
/* * 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(); } }
===========================设计模式系列文章=========================