简单工厂模式

Posted zhenhong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂模式相关的知识,希望对你有一定的参考价值。

一、大致结构

1、工厂类

2、抽象产品类

3、多个具体的产品类

二、代码

1、抽象产品类Fruit.java

package com.simplefactory;

public interface Fruit {
    
    public void grow();
    
    
}

2、具体子类Apple.java和Orangle.java

package com.simplefactory;

public class Apple implements Fruit {

    @Override
    public void grow() {
        System.out.println("我真在成长......");

    }

}
package com.simplefactory;

public class Orangle implements Fruit {

    @Override
    public void grow() {
        System.out.println("grow......");

    }

}

3、将以上产品实现类放入配置文件

fruitList.properties

apple=com.simplefactory.Apple
orangle=com.simplefactory.Orangle

4、工具类

FruitList.java

package com.simplefactory;

import java.io.IOException;
import java.util.Properties;

public class FruitList {

    private static Properties props;
    
    static {
        props = new Properties();
        try {
            //classpath加载文件需要/,如果你使用的是class Loader就不需要/
            //props.load(FruitList.class.getClassLoader().getResourceAsStream("fruitList.properties"));
            props.load(FruitList.class.getResourceAsStream("/fruitList.properties"));
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        
    }
    
    public static String getProperty(String name) {
        
        return props.getProperty(name);
        
    }
    
}

5、静态工厂类

SimpleFactory.java

package com.simplefactory;

public class SimpleFactory {
    
    public static Fruit createFruit(String name) {
        
        String className = FruitList.getProperty(name);
        
        Fruit fruit = null;
        
        try {
            fruit = (Fruit) Class.forName(className).newInstance();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return fruit;
        
    }
    
}

6、测试类

Test.java

package com.simplefactory;

public class Test {
    
    public static void main(String[] args) {
        Fruit apple = SimpleFactory.createFruit("apple");
        Fruit orangle = SimpleFactory.createFruit("orangle");
        
        apple.grow();
        orangle.grow();
    }
    
}

7、测试结果

 

以上是关于简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

PHP面向对象之选择工厂和更新工厂

设计模式-简单工厂工厂方法模式抽象工厂模式详解

设计模式之简单工厂模式

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)