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();
        }
    }
  • 相关阅读:
    shell进行mysql统计
    java I/O总结
    Hbase源码分析:Hbase UI中Requests Per Second的具体含义
    ASP.NET Session State Overview
    What is an ISAPI Extension?
    innerxml and outerxml
    postman
    FileZilla文件下载的目录
    how to use webpart container in kentico
    Consider using EXISTS instead of IN
  • 原文地址:https://www.cnblogs.com/dongl961230/p/13300365.html
Copyright © 2011-2022 走看看