package design.factory;
public interface AbstractHumanFactory {
public abstract <T extends Human> T createHuman(Class<T> c);
}
package design.factory;
public class BlackHuman implements Human {
public void getColor() {
// TODO Auto-generated method stub
System.out.println("黑色人种");
}
public void talk() {
// TODO Auto-generated method stub
System.out.println("非洲语");
}
}
package design.factory;
public class YellowHuman implements Human {
public void getColor() {
// TODO Auto-generated method stub
System.out.println("黄色人种");
}
public void talk() {
// TODO Auto-generated method stub
System.out.println("中国话");
}
}
package design.factory;
public interface Human {
public void getColor();
public void talk();
}
package design.factory;
public class HumanFactory implements AbstractHumanFactory {
public <T extends Human> T createHuman(Class<T> c) {
// TODO Auto-generated method stub
Human human = null;
try{
human = (Human)Class.forName(c.getName()).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return (T)human;
}
}
package design.factory;
public class NvWa {
public static void main(String[] args){
AbstractHumanFactory yinyanglu = new HumanFactory();
Human black = yinyanglu.createHuman(BlackHuman.class);
black.getColor();
black.talk();
Human yellow = yinyanglu.createHuman(YellowHuman.class);
yellow.getColor();
yellow.talk();
}
}
优点:良好的封装行,代码结构清晰,扩展性好,屏蔽了产品类,是典型的解耦框架。
使用场景:1.所有需要生成对象的地方都可以使用,不过要考虑是否增加代码的复杂性。
2.需要灵活的,可扩展的框架时可以考虑。
3.可用在异构项目上.
分享到:
相关推荐
C#简单工厂模式女娲造人
女娲造人工厂方法模式.zip
简单工厂模式(女娲造人),工厂(不同厂家生产不同空调),抽象工厂(抽象工厂生产一类CPU)
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象。
21 《女娲造人》.doc
NULL 博文链接:https://meng22623.iteye.com/blog/1142171
七年级语文上:第28课《女娲造人》同步练习人教新课标版(通用).doc
女娲造人.ppt
8.1 女娲造人的故事 8.2 工厂方法模式的定义 8.3 工厂方法模式的应用 8.3.1 工厂方法模式的优点 8.3.2 工厂方法模式的使用场景 8.4 工厂方法模式的扩展 8.5 最佳实践 第9章 抽象工厂模式 9.1 女娲的失误 9.2 抽象...
28女娲造人.ppt
21 女娲造人.doc
女娲造人教学案.doc
部编版21 女娲造人.doc
女娲造人 (5).ppt
女娲造人 (2).ppt
《女娲造人》课件.ppt
女娲造人同步练习精选.doc
2021年最新女娲造人七年级语文上学期教案
28女娲造人 (2).ppt
部编版21 《女娲造人》.doc