您好,登錄后才能下訂單哦!
先看代碼
class GcFactory { public void demo() { Factory ftFac = new Factory(); IFactory if1 = ftFac.getInstance("demo1"); if1.run(); IFactory if2 = ftFac.getInstance("demo2"); if2.run(); } } interface IFactory { public void run(); } class Demo1 : IFactory { public void run() { Console.WriteLine("演示一"); } } class Demo2 : IFactory { public void run() { Console.WriteLine("演示二"); } } /// <summary> /// 創建對象,此對象就是生產IFactory接口的對象的 /// </summary> class Factory { //創建IFactory接口實例 public IFactory getInstance(string obj) { if (obj.Equals("demo1")) { return new Demo1(); } else if(obj.Equals("demo2")){ return new Demo2(); } return null; } }
這樣就直接創建了兩個類。
什么是簡單工廠模式?舉個例子,現實中有很多工廠是負責制造產品的,相同的代碼里面的也是生產對象的,而現實中的工廠里面怎么制造的產品,是不需要讓別人知道,別人能知道的就是這個產品本身,不需要制作的過程。代碼里面也一樣,當用new關鍵字創建一個對象時,此時當前類就會密切的與創建的類發生耦合,后期比如修改需求時,這些類都需要去修改,而面向對象的思想其一就是封裝,簡化代碼,這樣的話就不符合面向對象的原則了,出現的這個簡單工廠模式就很好的解決了當前的問題。
優缺點。
工廠模式雖然很好的解決了類與類之間的耦合,但是當new一個對象的時候,后期修改這個對象后,工廠方法里面的對象也要修改,這個就帶來了一定的壞處。使用抽象工廠類就可以解決這個問題。
java和.net的實現方式其實是一樣的。
public class Demo { public static void main(String[] args) { FactoryImp fimp = new FactoryImp(); FactoryInter fi = fimp.getInstance("demo1"); fi.run(); } } interface FactoryInter{ public void run(); } class Demo1 implements FactoryInter{ @Override public void run() { System.out.println("演示一"); } } class Demo2 implements FactoryInter{ @Override public void run() { System.out.println("演示二"); } } // 創建對象,此對象就是生產IFactory接口的對象的 class FactoryImp{ //創建IFactory接口實例 public FactoryInter getInstance(String obj){ switch(obj){ case "demo1": return new Demo1(); case "demo2": return new Demo2(); } return null; } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。