• 使用反射来实现简单工厂模式


    1.建立配置文件pet.properties

     
    dog=demo04.Dog
    cat=demo04.Cat
    pig=demo04.Pig
     
    2.建立相关类 pet.java

    [代码]java代码:

    1
    2
    3
    4
    5
    6
    7
    8
    package demo04;
     
    public abstract class Pet {//抽象宠物类
     
    }
    class Dog extends Pet{}//Dog类
    class Cat extends Pet{}//Cat类
    class Pig extends Pet{}//Pig类
     
    3.建立宠物工厂类PetFactory.java
     

    [代码]java代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    package demo04;
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
     
    public class PetFactory {
        public static Pet getPet(String tag){
            Properties p=new Properties();//声明properties对象
            try {
                p.load(new FileInputStream("pet.properties"));//加载配置文件
            } catch (Exception e) {
                e.printStackTrace();
            }
            Pet pet=null;
            try {
                Class<!--?-->cla=Class.forName(p.getProperty(tag));//利用反射获取对象类
                 Object obj=cla.newInstance();//生成实例
                 pet=(Pet)obj;//强制类型转换
            } catch (Exception e) {
                e.printStackTrace();
            }
            return pet;
        }
    }
     
    4.测试类

    [代码]java代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    package demo04;
     
    public class Test {
     
        public static void main(String[] args) {
               
            Pet pet=PetFactory.getPet("dog");
            System.out.println(pet);
             
        }
     
    }
  • 相关阅读:
    B. Vova and Trophies 字符串预处理+思维+贪心
    Got error 28 from storage engine
    TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    mysql复制问题
    upgrade mysql
    replica set remove member
    Perl安装及环境配置
    Django
    mongo collection name—SyntaxError: identifier starts immediately after numeric literal
    MySQL 单表flashback
  • 原文地址:https://www.cnblogs.com/android-blogs/p/5632144.html
Copyright © 2020-2023  润新知