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

    简单工厂模式:也可以叫做静态工厂方法,属于类创建型模式,根据不同的参数,返回不同的类实现。

    主要包含了三个角色:

    A.抽象产品角色 一般用接口 或是 抽象类实现

    B.具体的产品角色,具体的类的实现

    C 工厂角色,实例的产生,根据不同参数,返回不同的类的实现。

    结合枚举类的实现代码如下:

    1、抽象的产品角色:

    package factory.simple;
    
    /**
     * 抽象产品角色 交通工具接口
     * 
     * @author lilin
     * 
     */
    public interface Car {
    
        /**
         * 上班函数
         */
        void gotowork();
    
    }

    2、具体的产品角色 总共实现了两个具体产品类,代码如下:

    package factory.simple;
    
    /**
     * 具体产品角色,自行车
     * 
     * @author lilin
     * 
     */
    public class Bike implements Car {
        @Override
        public void gotowork() {
            System.out.println("骑自行车去上班!");
        }
    
    }
    package factory.simple;
    
    /**
     * @author lilin
     * 
     */
    public class Bus implements Car {
    
        @Override
        public void gotowork() {
            System.out.println("坐公交车去上班!");
        }
    
    }

    3.工厂角色,实际实例的产生者:结合了枚举类型的实现,方便返回不同的实例判断

    /**
     * 
     */
    package factory.simple;
    
    /**
     * @author lilin
     * 
     */
    public class SimpleFactory {
    
        public enum CarTypr {
            BIKE, BUS;
        }
    
        /**
         * 获取car的实例返回
         * 
         * @param car
         * @return
         */
        public static Car getCar(CarTypr car) {
            Car simpleCar = null;
            switch (car) {
    
            case BIKE:
                simpleCar = new Bike();
                break;
            case BUS:
                simpleCar = new Bus();
                break;
            default:
                simpleCar = new Bike();
            }
            return simpleCar;
        }
    }

    最后,采用testNG,实现简单的测试:

    /**
     * 
     */
    package factory.simple;
    
    import org.testng.annotations.Test;
    
    import factory.simple.SimpleFactory.CarTypr;
    
    /**
     * @author lilin
     * 
     */
    public class TestSimpleFactory {
    
        @Test
        public void test1() {
            Car car = SimpleFactory.getCar(CarTypr.BIKE);
            System.out.println("上班方式:");
            car.gotowork();
    
            Car car2 = SimpleFactory.getCar(CarTypr.BUS);
            System.out.println("上班方式:");
            car2.gotowork();
        }
    }

    很容易就能得到测试结果,得知,一个简单工厂模式的实现,到此over。测试结果如下:

    上班方式:
    骑自行车去上班!
    上班方式:
    坐公交车去上班!
    PASSED: test1

  • 相关阅读:
    编程填空:第i位替换
    poj 2192 Zipper
    3:拦截导弹
    vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
    数字三角形【汇总】
    codevs 1576 最长严格上升子序列
    3299 有序数组合并求第K大问题
    输出数组第k大的元素
    Java线程同步的Monitor机制(Lock配合Condition)
    堆排序Heapsort的Java和C代码
  • 原文地址:https://www.cnblogs.com/lilin0719/p/5304482.html
Copyright © 2011-2022 走看看