簡單工廠模式 XML解耦 反射

2021-09-11 22:56:17 字數 2373 閱讀 1134

目錄

一、簡單工廠模式

二、簡單工廠模式角色

三、普通**例項

四、配置檔案+反射

五、uml圖

從字面意思看來就是要有乙個工廠類,那麼這個工廠類是幹什麼的呢? 建立並返回乙個具體物件。

應用場景如下:

假如我們要做乙個計算器,它有很多個功能。加減乘除取餘乘方等,利用簡單工廠模式,我們要設計乙個計算類operation,這個類裡面包含什麼成員和方法呢?

關於抽象類,有以下幾點需要注意:

抽象類不可例項化,也就是不會直接去使用它,而是通過子類的繼承間接使用。

抽象方法必須被子類重寫,這裡的getresult函式要被子類重寫。包含抽象方法的類要定義為抽象類。

這個抽象類的**如下:

package design;

public abstract class operation

public void setnuma(double numa)

public double getnumb()

public void setnumb(double numb)

public abstract double getresult();// 公共屬性

}

有了這個抽象類,我們要設計加減乘除子類,子類繼承這個抽象類並重寫getresult方法。**如下:

package design;

public class operationadd extends operation

}

package design;

public class operationsub extends operation

}

package design;

public class operationmul extends operation

}

package design;

public class operationdiv extends operation catch (exception e)

return result;

}}

有了這四個運運算元類,就很方便了,假如以後要增加運算,只用新增別的運算類並繼承抽象類就好了。

下面是工廠類,工廠類需要注意兩點:

**如下:

package design;

public class operationfactory

return ope;

}}

建立完這個工廠類之後,我們就可以進行客戶端的建立了,這裡我們再新增乙個測試類。

package design;

public class mainone catch(exception e)}}

通過這個測試類,我們可以物件創立並測試**。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace ******factory

get

}public double numb

get

}public abstract double getresult();// 公共屬性}}

各種操作類和上面相同,不再寫出。

using system;

using system.collections.generic;

using system.configuration;

using system.linq;

using system.reflection;

using system.text;

using system.threading.tasks;

namespace ******factory

catch (exception e)}}

}

這裡利用配置檔案+反射實現,去掉了switch語句,實現了解耦。加上反射,就很完美了呀。

這裡的反射要新增引用,在system下。然後是注意要用英文,中文會出現很多問題。

uml圖如下:(很不專業的畫法)

工廠模式實現解耦

1.首先建立乙個業務類service,在service中有乙個屬性dao,daoimpl是實現了dao介面的類 public class serviceimpl public inte ce dao 2.在建立乙個測試類 public class testmethod 3.我們發現這樣雖然完成業務但...

工廠模式解耦 dom4j解析xml

我們當前的開發末實現,service層對dao層有依賴,例如在userservcieimp 現了 private productdao dao new productdaoimpl 假如我們做了乙個產品oa,但是我們沒有辦法確定客戶採用什麼樣的資料庫,此時我們需要 需要為當前專案開發不同的資料庫的版...

為什麼工廠模式可以解耦?下篇

上節我已經基本說明了耦合,以及在一些業務上是怎麼發生的,實際上我們要理解乙個思想,傳統的ejb開發模式,因為受到了很多很多的框架硬性約束,web容器的約束 導致了 的可讀性,可移植和可擴充套件性變得不好,所以有這些解耦的思想,我們才會在03年spring的廣泛流行!回顧上節末尾 我們是不是遺留了乙個...