zoukankan      html  css  js  c++  java
  • 动态工厂模式代码实例

    package net.esrib.Factory;
    
    interface Car{ //车的接口类
        public void run();
        public void stop();
      }
    
    class Benz implements Car{ //奔驰车类
        public void run(){
          System.out.print("Benz 开动了。。。");
        }
        public void stop(){
          System.out.print("Benz 停车了。。。");
        }
    }
    
      class Ford implements Car{ //福特车类
          public void run(){
            System.out.print("Ford 开动了。。。");
          }
          public void stop(){
            System.out.print("Ford 停车了。。。");
          }
      }
    
      class BigBus implements Car{ //大巴车类
          public void run(){
            System.out.print("大巴车 开动了。。。");
          }
          public void stop(){
            System.out.print("大巴车 停车了。。。");
          }
      }
    
      class MiniBus implements Car{ //小巴车类
          public void run(){
            System.out.print("小巴车 开动了。。。");
          }
          public void stop(){
            System.out.print("小巴车 停车了。。。");
          }
      }
    
    interface AbstractFactory{
      //只是一个概念,没有任何方法
    }
    class CarFactory implements AbstractFactory{//造小汽车的工厂
      public Car getCar(String type){
        Car c=null;
        try {
         //通过JAVA的反射机制实例化实现类,给出完整的 “包.类”名称
         //这里要类型转换
         c=(Car)Class.forName("net.esrib.Factory.FactoryDemo02."+type).newInstance();
        }
        catch (ClassNotFoundException ex) {
        }
        catch (IllegalAccessException ex) {
        }
        catch (InstantiationException ex) {
        }
        return c;
      }
    }
    
    class BusFactory implements AbstractFactory{//造巴士汽车的工厂
      public Car getBus(String type){
        Car c=null;
        try {
         //通过JAVA的反射机制实例化实现类,给出完整的 “包.类”名称
         //这里要类型转换
         c=(Car)Class.forName("net.esrib.Factory.FactoryDemo02."+type).newInstance();
        }
        catch (ClassNotFoundException ex) {
        }
        catch (IllegalAccessException ex) {
        }
        catch (InstantiationException ex) {
        }
        return c;
      }
    }
    
    public class FactoryDemo02 {
      public static void main(String [] args){
        //生产小汽车
        /*
        CarFactory cf=new CarFactory();
        Car c=null;
        c=cf.getCar("Ford");
        c.run();
        c.stop();
        */
       
        // 生产巴士汽车
        BusFactory bf=new BusFactory();
        Car c=null;
        c=bf.getBus("BigBus");
      }
    }
    

      

  • 相关阅读:
    CCNP-MPLS-标签交换
    Mac地址表、STP与RSTP原理
    mysql 初始数据库简单操作
    异步回调,事件,线程池与协程
    bug问题
    GIL 线程池
    异常处理
    奇怪的东西
    绑定方法
    初体验
  • 原文地址:https://www.cnblogs.com/cyjch/p/2340428.html
Copyright © 2011-2022 走看看