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

    简单工厂模式的实现分为一下几个步骤(这里以工厂创建交通工具为例):

    • 定义一个交通工具的总称(接口)
    • 让实现类(具体的交通工具)实现这个接口
    • 定义一个工厂(创建交通工具)
    • 创造者调用工厂方法

    下图是简单的类图可以帮助理解:

     1、定义一个交通工具的总称(接口)

    package com.dongl.factorymethod;
    
    /**
     * 定义一个交通工具的总称
     */
    public interface Vehicle {
        //交通工具可以行驶
        void go();
    }

    2、让实现类(具体的交通工具)实现这个接口

    小汽车:

    package com.dongl.factorymethod;
    
    /**
     * 小汽车实现交通工具接口
     */
    public class Car implements Vehicle {
        @Override
        public void go() {
            System.out.println("car go wuwuwuwuw-------------");
        }
    }

    公交车:

    package com.dongl.factorymethod;
    
    /**
     * 公交车实现交通工具接口
     */
    public class Bus implements Vehicle {
        @Override
        public void go() {
            System.out.println("bus biubiubiu -------");
        }
    }

    飞机:

    package com.dongl.factorymethod;
    
    /**
     * 飞机实现交通工具接口
     */
    public class Plane implements Vehicle {
        @Override
        public void go() {
            System.out.println("plane flying shushua--------------");
        }
    }

    2、定义一个工厂(创建交通工具)

    package com.dongl.factorymethod;
    
    /**
     * 交通工具工厂
     * 通过 Class.forName(clazz.getName()).newInstance() 返回一个具体的实体类
     */
    public class VehicleFactory {
        public static Vehicle createVehicle(Class clazz){
            Vehicle moveable = null;
                try { //定义一个类型的交通工具
                     moveable = (Vehicle)Class.forName(clazz.getName()).newInstance();
                } catch (InstantiationException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    System.out.println("定义错误!");
                } catch (ClassNotFoundException e) {
                    System.out.println("指定的交通工具不存在---------");
                }
            return moveable;
        }
    
    }

    4、创造者调用工厂方法

    package com.dongl.factorymethod;
    
    
    public class Creator {
        public static void main(String[] args) {
            //造小汽车
            Vehicle moveable = VehicleFactory.createVehicle(Car.class);
            moveable.go();
    
            //造飞机
            Vehicle moveable1 = VehicleFactory.createVehicle(Plane.class);
            moveable1.go();
    
            //造公交车
            Vehicle moveable2 = VehicleFactory.createVehicle(Bus.class);
            moveable2.go();
        }
    }
  • 相关阅读:
    安装Oracle时出现环境变量Path的值大于1023的解决办法
    JavaScript通过元素id和name直接获取元素的方法
    [转载]T-SQL(Oracle)语句查询执行顺序
    [转载]T-SQL(MSSQL)语句查询执行顺序
    HTML5权威指南 17.其他API
    HTML5权威指南 16.拖放API与通知API
    HTML5权威指南 15.获取地理位置信息
    HTML5权威指南 14.使用Web Workers处理线程
    HTML5权威指南 13.扩展的XMLHttpRequest API
    HTML5权威指南 12.WebRTC通信
  • 原文地址:https://www.cnblogs.com/dongl961230/p/13300365.html
Copyright © 2011-2022 走看看