您的位置:首页 > 其它

23种设计模式(2):简单工厂模式

2016-05-02 14:56 253 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LiveRock_lalala/article/details/51296383

简单工厂要素


1、没有抽象类,直接具体工厂 2、创建工厂的限制是静态的(public static Human createHuman ... )

类图



代码

interface Human
{
public void getColor();
public void talk();
}

class BlackHuman implements Human
{
public void getColor() {
System.out.println("黑色人种的皮肤颜色是黑色的!");
}
public void talk() {
System.out.println("黑色人会说话,一般人听不懂。");
}
}
class YellowHuman implements Human
{
public void getColor() {
System.out.println("黄色人种的皮肤颜色是黄色的!");
}
public void talk() {
System.out.println("黄色人种会说话,一般说的都是双字节");
}
}

class WhiteHuma implements Human
{
public void getColor() {
System.out.println("白色人种的皮肤颜色是白色的!");
}
public void talk() {
System.out.println("白色人种会说话,一般说的都是单字节");
}
}

public class HumanFactory {

public static Human createHuman(Class<? extends Human> c){

//定义一个生产出的人种

Human human=null;

try {

//产生一个人种

human = (Human)Class.forName(c.getName()).newInstance();

} catch (Exception e) {

System.out.println("人种生成错误!");

}

return human;

}

}

public class NvWa {

public static void main(String[] args) {

//女娲第一次造人,火候不足,缺陷产品

System.out.println("--造出的第一批人是白色人种--");

Human whiteHuman = HumanFactory.createHuman(WhiteHuman.class);

whiteHuman.getColor();

whiteHuman.talk();

//女娲第二次造人,火候过足,又是次品,

System.out.println("\n--造出的第二批人是黑色人种--");

Human blackHuman = HumanFactory.createHuman(BlackHuman.class);

blackHuman.getColor();

blackHuman.talk();

//第三次造人,火候正正好,优品!黄色人种

System.out.println("\n--造出的第三批人是黄色人种--");

Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);

yellowHuman.getColor();

yellowHuman.talk();

}

}

注意


简单工厂模式(Simple Factory Pattern),也叫做静态工厂模式。在实际项目中,采用该方法的案例还是比较多的,其缺点是工厂类的扩展比较困难,不符合开闭原则,但它仍然是一个非常实用的设计模式。

参考


https://www.geek-share.com/detail/2472319760.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: