91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計模式之簡單工廠模式

發布時間:2020-08-09 16:04:12 來源:網絡 閱讀:327 作者:1778161229 欄目:開發技術

先看代碼

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;
	}
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

托克逊县| 铜川市| 安康市| 长丰县| 开平市| 江口县| 新竹县| 稻城县| 德格县| 大田县| 江山市| 左权县| 西乡县| 原阳县| 白银市| 高平市| 澄江县| 靖宇县| 江门市| 环江| 沁水县| 四平市| 湖北省| 黄平县| 镇原县| 元氏县| 赞皇县| 泾川县| 安康市| 北海市| 烟台市| 正镶白旗| 盘锦市| 柯坪县| 汕头市| 泗水县| 定兴县| 彰化市| 安溪县| 小金县| 高邑县|