5.28簡單工廠模式

測試類

package org.westos.常用的設計模式.簡單工廠模式;
//這是一個簡單工廠模式的測試類
/**
 * 簡單工廠模式:
 * 優點:
 * 		不需要再創建具體的對象,把創建的工作交給了工廠類(這個類私有化了構造方法,所提提供的方法爲靜態方法,調用使用類名.方法名)
 * 缺點:
 * 		如果有新的類增加,構造方法不同,就需要去修改工廠類,不符合設計原則開閉原則
 * */
public class Demo {
	public static void main(String[] args) {
		
		Animal cat = AnimalFactory.createAnimal("Cat");
		cat.eat();
		Animal dog = AnimalFactory.createAnimal("Dog");
		dog.eat();
		System.out.println("----------------");
	
		
		
		Animal a = AnimalFactory.createAnimal("Cat");
		a.eat();
		a = AnimalFactory.createAnimal("Dog");
		a.eat();
		a = AnimalFactory.createAnimal("Pig");
		if(a!=null) {
			a.eat();
		}else {
			System.out.println("工廠類不提供該類");
		}
	}
}

抽象類

package org.westos.常用的設計模式.簡單工廠模式;
//這是一個抽象類,提供了一個Animal類
public abstract class Animal {
	//這是抽象類Animal的共有功能
	public abstract void eat();
}

具體類

package org.westos.常用的設計模式.簡單工廠模式;
//這是一個具體類貓,繼承了Animal類
public class Cat extends Animal {
	//重寫Animal類的抽象方法
	@Override
	public void eat() {
		System.out.println("貓吃魚");
	}

}
package org.westos.常用的設計模式.簡單工廠模式;
//這是一個具體類狗,繼承了Animal類
public class Dog extends Animal {
	//重寫Animal類的抽象方法
	@Override
	public void eat() {
		System.out.println("狗吃骨頭");
	}

}

工廠類

package org.westos.常用的設計模式.簡單工廠模式;
//這是一個工廠類,用來創建各種具體類的對象
//採用的是多態的方式,Animal 對象名 = new 具體類();
public class AnimalFactory {
	private AnimalFactory(){}
	public static Animal createAnimal(String str) {
		if(str.equals("Cat")) {
			return new Cat();
		}else if(str.equals("Dog")) {
			return new Dog();
		}
		return null;
	}
}


發佈了61 篇原創文章 · 獲贊 6 · 訪問量 7901
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章