Java 工廠模式

Java工廠模式分爲三種

1、簡單工廠模式(又叫靜態工廠模式)

代碼:

package simplefactory;

public interface Person {
	public void say();
}

 

package simplefactory;

public class Chinese implements Person{

	public void say() {
		System.out.println("I am Chinese.");
	}

}

 

package simplefactory;

public class Japanese implements Person {

	public void say() {
		System.out.println("I am Japanese.");
	}

}

 

package simplefactory;

public class PersonCreator {
	public Person createPerson(String type) {
		if (type.equals("chn")) {
			return new Chinese();
		}
		if (type.equals("jpn")) {
			return new Japanese();
		}

		return null;
	}
}

 

package simplefactory;

public class Test {
	public static void main(String[] args) {
		PersonCreator pc = new PersonCreator();
		pc.createPerson("chn").say();
		pc.createPerson("jpn").say();
	}
}

 2、抽象工廠模式

代碼:

package factorymethod
public abstract class AbstractFactory {
	public abstract Person create();
}

 

package factorymethod;

public class Chinese extends Person{

	public void say() {
		System.out.println("I am Chinese.");
	}

}

 

package factorymethod;

public class Japanese extends Person {

	public void say() {
		System.out.println("I am Japanese.");
	}

}

 

package factorymethod;

public interface AbstractFactory {
	public Person create();
}

 

package factorymethod;

public class ChineseFactory implements AbstractFactory {

	public Person create() {

		return new Chinese();
	}

}

 

package factorymethod;

public class JapaneseFactory implements AbstractFactory {

	public Person create() {

		return new Japanese();
	}

}

 

package factorymethod;

public class Test {
	public static void main(String[] args) {
		ChineseFactory cf = new ChineseFactory();
		cf.create().say();
		JapaneseFactory jf = new JapaneseFactory();
		jf.create().say();
	}
}

 3、抽象工廠模式

代碼:

package abstractfactory;

public interface Person {
	public void say();
}

 

package abstractfactory;

public class Chinese implements Person{

	public void say() {
		System.out.println("I am Chinese.");
	}

}

 

package abstractfactory;

public class Japanese implements Person {

	public void say() {
		System.out.println("I am Japanese.");
	}

}

 

package abstractfactory;

public abstract class AbstractFactory {
	public abstract Chinese createChinese();
	public abstract Japanese createJapanese();
}

 

package abstractfactory;

public class DefaultFactory extends AbstractFactory{

	public Chinese createChinese() {
		return new Chinese();
	}

	public Japanese createJapanese() {
		return new Japanese();
	}

}

 

package abstractfactory;

public class Test {
	public static void main(String[] args) {
		AbstractFactory af = new DefaultFactory();
		af.createChinese().say();
		af.createJapanese().say();
	}
}

 

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