简单工厂,工厂方法,抽象工厂的区别
1,最初直接调用
Class Client{ MySqlConnection mysql=new MySqlConnection (); DB2Connection db2=new DB2Connection(); OracleConnection oracle=new OracleConnection (); }
interace IConnection{}Class DB2Connection Implements IConnection{ }Class Factory {private IConnection getConnection(String connectionKind){ Switch(connectionKind){ Case ”mysql”: MySqlConnection mysql=new MySqlConnection (); Break; Case ”DB2”: DB2Connection db2=new DB2Connection(); Break; Case ” Oracle”: OracleConnection oracle=new OracleConnection (); Break; }….}}Class Client{Public static void main(){ IConnection connection= Factory.getConnection(“db2”);}}
abstaract class abstaractFactory{private IConnection getConnection(String connectionKind);}Class DB2Factory exends abstaractFactory { ….}}Class Client{Public static void main(){ IConnection connection= new DB2Factory();//再加oracle就新增一个oracle工厂类继承抽象工厂}}
Class Factory{ Private IConnection conn; Private void setIConnection(){…}Private IConnection getIConnection(){….}}配置文件:
<bean id=”factory” class=”Factory”> <property name=”IConnection” value=”DB2Connection”/></bean>这时候我们通过依赖注入将连接注入。依赖注入的基本思路是:切断服务类对其依赖的接口具体实现类的直接联系,服务类不直接创建依赖的具体对象,而由框架来注入。这样我们就消除了组件之间的直接联系,而把这些依赖转移到配置文件中进行定义,框架根据配置文件注入对象间的依赖。这就是依赖注入。