zoukankan      html  css  js  c++  java
  • 简单工厂(二)——coding

    
    
    public abstract class Video {
        public abstract void produce();
    
    }
    
    
    
    public class JavaVideo extends Video {
        @Override
        public void produce() {
            System.out.println("录制Java课程视频");
        }
    }
    public class PythonVideo extends Video {
    @Override
    public void produce() {
    System.out.println("录制Python课程视频");
    }
    }
     
    public class VideoFactory {
        // 反射实现
        public Video getVideo(Class c){
            Video video = null;
            try {
                video = (Video) Class.forName(c.getName()).newInstance();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return video;
        }
    
        // 基础实现
        public Video getVideo(String type){
            if("java".equalsIgnoreCase(type)){
                return new JavaVideo();
            }else if("python".equalsIgnoreCase(type)){
                return new PythonVideo();
            }
            return null;
        }
    
    }
    public class Test {
        public static void main(String[] args) {
    // 方式一:
    // VideoFactory videoFactory = new VideoFactory(); // Video video = videoFactory.getVideo("java"); // if(video == null){ // return; // } // video.produce();

    // 方式二: VideoFactory videoFactory = new VideoFactory(); Video video = videoFactory.getVideo(JavaVideo.class); if(video == null){ return; } video.produce(); }
  • 相关阅读:
    小黄衫获奖感言
    原型设计
    20210326编程作业
    阅读任务
    准备工作
    cmd命令行批量修改文件名后缀
    【智能算法】模拟退火算法
    【智能算法】粒子群寻优算法
    【并行计算】基于OpenMP的并行编程
    Python科学计算——前期准备
  • 原文地址:https://www.cnblogs.com/thiaoqueen/p/11169102.html
Copyright © 2011-2022 走看看