`
zhaojian0910
  • 浏览: 46378 次
社区版块
存档分类
最新评论

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

 

0
0
分享到:
评论
5 楼 windshome 2015-03-05  
那还相烦老兄随便帖一个工厂模式的例子,我来描述一下我的观点,呵呵。
4 楼 devilyard 2015-03-05  
windshome 写道
工厂模式早过时啦!不要再学习什么工厂模式了,呵呵!


能详述下么
3 楼 windshome 2015-03-05  
程序不需要工厂,工厂给程序员带来了歧义和费解。
2 楼 atgoingguoat 2015-03-05  
工厂模式早过时 ?

         程序其实百变不离其中
1 楼 windshome 2015-03-05  
工厂模式早过时啦!不要再学习什么工厂模式了,呵呵!

相关推荐

Global site tag (gtag.js) - Google Analytics