Java创建实例的方式比较

合理有效地创建对象实例以降低类关系的耦合度

一:利用new创建对象
缺点:
1:创建对象时需要指定目标类名称,耦合度太高
2:对于单例对象来说,可能会重复创建不必要的对象
二:利用各种创建型模式创建对象
1)工厂模式
静态工厂模式每次调用时不需要非得创建一个工厂对象实例(单例模式),而且还可以为重复的调用返回同一个对象
2)享元模式
3)构建者模式:将一个复杂对象的构建过程与它的表示部件相互分离,使得同样的构建过程可以创建出不同的表示部件,也就是希望所获得的目标组合对象不依赖于组成它的各个部件子对象。

设计构建者接口:

interface StatementBuilder:
    void loadJDBCDriverClass();
    void connectionToDB();
    void createStatement();
    Statement getStatement();

针对mysql数据库的构建者实现类

class MySqlStatementBuilder
    Statement statement;
    void loadJDBCDriverClass();
    void connectionToDB();
    void createStatement();
    Statement getStatement();

针对sqlserver数据库的构建者实现类

class MSSQLServerStatementBuilder
    Statement statement;
    void loadJDBCDriverClass();
    void connectionToDB();
    void createStatement();
    Statement getStatement();

针对其他数据库的构建者实现类

.....

指导者:指导Builder怎么去构建

class StatementDirector
    StatementBuilder builrder=null;
    public void constructStatement(){
        builder.loadJDBCDriverClass();
        builder.connectionToDB();
        builder.createStatement();
    }

创建构建者对象的工厂:

class StatementBuilderFactory
    static final int MySQLState=1;
    static final int MSSQLState=2;
    StatementBuilder newStatementBuilderInstance(int);

测试:
通过【构建者工厂】创建一个【构建者】,将构建者传给【指导者】,让它指导构建者创建【对象】

三:利用Java反射创建对象
1)利用properties键值对文件
使用java.util.Properties类的load方法加载属性文件,获取相应的值。加载的方式有

Class.getResourceAsStream()
Class.getResource();

2)利用xml配置文件
利用Jdom
3)Java反射技术动态创建对象实例
利用

Class.forName("");

获取类的Class对象,然后创建
四:利用依赖注入
spring

你可能感兴趣的:(Java创建实例的方式比较)