【简单工厂模式】
简单工厂模式,又称为静态工厂模式,是工厂方法模式的扩展,其与工厂方法模式的主要区别在于工厂类,简单工厂模式的工厂类特点:
1.去掉了抽象工厂类,直接在具体工程类MiPhoneFactory中添加createMiPhone()方法。
2.把createMiPhone方法修改为static静态类型的。
【简单工厂模式例子】
package com.Higgin.SimpleFactory; /** * 小米手机接口 * 其有三个实现类,分别对应小米1,小米2,小米3 */ interface MiPhone{ public void getPrice(); public void call(); } /** * 小米1 */ class Mi1 implements MiPhone{ public void getPrice() { System.out.println("小米1价格:999元!"); } public void call() { System.out.println("小米1打电话..."); } } /** * 小米2 */ class Mi2 implements MiPhone{ public void getPrice() { System.out.println("小米2价格:1999元!"); } public void call() { System.out.println("小米2打电话..."); } } /** * 小米3 */ class Mi3 implements MiPhone{ public void getPrice() { System.out.println("小米3价格:2999元!"); } public void call() { System.out.println("小米3打电话..."); } } /** * 简单工厂模式的工厂类 * 【与工厂方法模式的区别,两点】 * 1.去掉了抽象工厂类,直接在决堤工程类里面添加createMiPhone()方法 * 2.createMiPhone方法改为静态方法 */ class MiPhoneFactory{ public static <T extends MiPhone> T createMiPhone(Class<T> c){ MiPhone miPhone=null; try { miPhone=(MiPhone) Class.forName(c.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T) miPhone; } } public class TestSimpleFactory { public static void main(String[] args) { MiPhone mi1=MiPhoneFactory.createMiPhone(Mi1.class); mi1.getPrice(); mi1.call(); MiPhone mi2=MiPhoneFactory.createMiPhone(Mi2.class); mi2.getPrice(); mi2.call(); } }
【运行结果】