學習設計模式的同學第乙個接觸的大多數都是工廠模式,工廠模式又包括簡單工廠,工廠方法,抽象工廠等模式。很多文章說的都不是很明白,而且抽象工廠也經常用不到。大多數情況下我們用到的是本文說的這種結合模式,跟工廠方法,抽象工廠不一樣。具體看本文的例子。
vo開頭的類都是gui物件,也就vo物件,用於前端展示的物件。
networkdevice是後台的乙個物件,這個物件包含了所有的裝置的屬性,是個大物件。並沒有進行拆分。vo物件我們已經進行了抽象,進行了拆分,比如通用屬性儲存在voserver中,變化的屬性有子類承載,比如vodma,vorpad。
我們期待通用的屬性轉換共用**邏輯,不同的屬性自定義轉換類。
轉換類
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 10:33
* 4*/public abstract class converter
abstract void convertercustomizeattribute(voserver voserver, networkdevice networkdevice);
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 11:10
* 4*/public class dmaconveter extends converter
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 11:10
* 4*/public class rpadconveter extends converter
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 10:42
* 4*/public class voserver
public void setip(string ip)
public string getname()
public void setname(string name)
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 11:15
* 4*/public class vodma extends voserver
public void setmcuaddrss(string mcuaddrss)
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 10:43
* 4*/public class vorpad extends voserver
public void setsipaddress(string sipaddress)
public string getproxyaddress()
public void setproxyaddress(string proxyaddress)
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 10:45
* 4*/public class networkdevice
public void setmcuaddress(string mcuaddress)
public string getname()
public void setname(string name)
public string getip()
public void setip(string ip)
public string getsipaddress()
public void setsipaddress(string sipaddress)
public string getproxyaddress()
public void setproxyaddress(string proxyaddress)
}
package com.puhui.goosecard.api.utils;
/** * 2 * @author: kerry
* 3 * @date: 2018/8/24 11:48
* 4*/public class test
}
Java設計模式 工廠方法
定義乙個用於建立物件的介面,factory method將乙個類的例項化延遲到了子類。工廠方法模式的功能 工廠方法的主要功能是讓父類在不知道具體實現的情況下,完成自身的功能呼叫,而具體的實現延遲到子類來實現。實現成抽象類 工廠方法的實現中,通常父類會是乙個抽象類,裡面包含建立所需物件的抽象方法,這些...
Java設計模式 工廠方法模式
定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。factory method 使乙個類的例項化延遲到其子類。package car inte ce public inte ce icar inte ce package car imple import car inte ce.icar in...
Java設計模式 工廠方法模式
工廠方法模式應用背景 客戶類不關心使用哪個具體的類,只關心介面所提供的功能。建立過程比較複雜,例如需要初始化其他關聯的資源類。介面或者抽象類有許多實現類,客戶 需要編寫大量if else邏輯來決定執行時使用哪個具體的實現類。不希望給客戶程式暴露太多的類的內部結構,這樣做可以降低耦合度。優化效能,比如...