我看懂的设计模式 Factory Method工厂方法
2012-11-07 17:57
218 查看
Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。
package com.cbf4life;
public interface Human {
public void laugh();
public void cry();
public void talk();
}
package com.cbf4life;
public class YellowHuman implements Human {
public void cry() {
System.out.println("***人种会哭");
}
public void laugh() {
System.out.println("***人种会大笑,幸福呀!");
}
public void talk() {
System.out.println("***人种会说话,一般说的都是双字节");
}
}
package com.cbf4life;
public class WhiteHuman implements Human {
public void cry() {
System.out.println("白色人种会哭");
}
public void laugh() {
System.out.println("白色人种会大笑,侵略的笑声");
}
public void talk() {
System.out.println("白色人种会说话,一般都是但是单字节!");
}
}
package com.cbf4life;
public class BlackHuman implements Human {
public void cry() {
System.out.println("黑人会哭");
}
public void laugh() {
System.out.println("黑人会笑");
}
public void talk() {
System.out.println("黑人可以说话,一般人听不懂");
}
}
package com.cbf4life;
import java.util.List;
import java.util.Random;
public class HumanFactory {
public static Human createHuman(Class c){
Human human=null;
try {
human = (Human)Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
System.out.println("必须指定人种的颜色");
} catch (IllegalAccessException e) {
System.out.println("人种定义错误!");
} catch (ClassNotFoundException e) {
System.out.println("混蛋,你指定的人种找不到!");
}
return human;
}
package com.cbf4life;
public class NvWa {
public static void main(String[] args) {
//女娲第一次造人
System.out.println("------------造出的第一批人是这样的:白人
-----------------");
Human whiteHuman = HumanFactory.createHuman(WhiteHuman.class);
whiteHuman.cry();
whiteHuman.laugh();
whiteHuman.talk();
//女娲第二次造人
System.out.println("\n\n------------造出的第二批人是这样的:黑人
-----------------");
Human blackHuman = HumanFactory.createHuman(BlackHuman.class);
blackHuman.cry();
blackHuman.laugh();
blackHuman.talk();
//第三批
System.out.println("\n\n------------造出的第三批人是这样的:***人种
-----------------");
Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);
yellowHuman.cry();
yellowHuman.laugh();
yellowHuman.talk()
}
}
package com.cbf4life;
public interface Human {
public void laugh();
public void cry();
public void talk();
}
package com.cbf4life;
public class YellowHuman implements Human {
public void cry() {
System.out.println("***人种会哭");
}
public void laugh() {
System.out.println("***人种会大笑,幸福呀!");
}
public void talk() {
System.out.println("***人种会说话,一般说的都是双字节");
}
}
package com.cbf4life;
public class WhiteHuman implements Human {
public void cry() {
System.out.println("白色人种会哭");
}
public void laugh() {
System.out.println("白色人种会大笑,侵略的笑声");
}
public void talk() {
System.out.println("白色人种会说话,一般都是但是单字节!");
}
}
package com.cbf4life;
public class BlackHuman implements Human {
public void cry() {
System.out.println("黑人会哭");
}
public void laugh() {
System.out.println("黑人会笑");
}
public void talk() {
System.out.println("黑人可以说话,一般人听不懂");
}
}
package com.cbf4life;
import java.util.List;
import java.util.Random;
public class HumanFactory {
public static Human createHuman(Class c){
Human human=null;
try {
human = (Human)Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
System.out.println("必须指定人种的颜色");
} catch (IllegalAccessException e) {
System.out.println("人种定义错误!");
} catch (ClassNotFoundException e) {
System.out.println("混蛋,你指定的人种找不到!");
}
return human;
}
package com.cbf4life;
public class NvWa {
public static void main(String[] args) {
//女娲第一次造人
System.out.println("------------造出的第一批人是这样的:白人
-----------------");
Human whiteHuman = HumanFactory.createHuman(WhiteHuman.class);
whiteHuman.cry();
whiteHuman.laugh();
whiteHuman.talk();
//女娲第二次造人
System.out.println("\n\n------------造出的第二批人是这样的:黑人
-----------------");
Human blackHuman = HumanFactory.createHuman(BlackHuman.class);
blackHuman.cry();
blackHuman.laugh();
blackHuman.talk();
//第三批
System.out.println("\n\n------------造出的第三批人是这样的:***人种
-----------------");
Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);
yellowHuman.cry();
yellowHuman.laugh();
yellowHuman.talk()
}
}
相关文章推荐
- 结合Android学设计模式--工厂方法(FactoryMethod)
- 学习笔记系列之NET设计模式(3):工厂方法(Factory Method)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 设计模式之工厂方法(Factory Method)
- 跟着Android学设计模式:工厂方法(Factory method)
- 设计模式之(Factory method)工厂方法模式
- 设计模式 - 工厂方法(Factory Method) C++实现
- 设计模式之 Factory Method 工厂方法
- [设计模式-创建型]工厂方法(Factory Method)
- 设计模式--工厂方法(FactoryMethod)
- 设计模式学习笔记四:工厂方法(Factory Method)
- 设计模式之工厂方法(Factory Method)模式
- 设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
- 设计模式之工厂方法(factory method)
- 浅谈C++设计模式之工厂方法(Factory Method)
- Java设计模式——工厂方法(Factory Method)
- 设计模式--工厂方法(FactoryMethod)
- VB.net设计模式之工厂方法,抽象工厂方法(Factory Method Pattern,Abstract Factory Method Pattern)
- 3.23种设计模式的Java版--Factory Method(工厂方法)
- 【设计模式】——工厂方法FactoryMethod