您好,欢迎来到锐游网。
搜索
您的当前位置:首页java工厂设计模式

java工厂设计模式

来源:锐游网


附件1:没有使用工厂模式:修改子类时还得修改客户端

interface Fruit

{

public void eat();

};

class Apple implements Fruit

{

public void eat()

{

System.out.println(\"**吃苹果**\");

}

};

class Orange implements Fruit

{

public void eat()

{

System.out.println(\"**吃橘子**\");

}

};

public class MeiYouShiYong_GongChangMoShi

{

public static void main(String asrgs[])

{

Fruit f=new Apple();

f.eat();

}

};

运行结果:

**吃苹果**

分析:主方法应该就表示一个客户端,主方法的代码越少越好。此时,直接在主方法中指定了要操作的子类(如Fruit f=new Apple()中的Apple),如果要更换子类,则肯定要修改客户端。

附件2:使用工厂模式:修改子类时不用修改客户端

interface Fruit

{

public void eat();

};

class Apple implements Fruit

{

public void eat()

{

System.out.println(\"**吃苹果**\");

}

};

class Orange implements Fruit

{

public void eat()

{

System.out.println(\"**吃橘子**\");

}

};

class Factory

{

public static Fruit getInstance(String className)

{

Fruit f=null;

//此处不要使用className.equals(\"apple\")

//因为:当className为null时,空值不能调用equals(\"apple\")函数

if(\"apple\".equals(className))

{

f=new Apple();

}

if(\"orange\".equals(className))

{

f=new Orange();

}

return f;

}

}

public class ShiYong_GongChangMoShi_WanShan

{

public static void main(String args[])

{

Fruit f=Factory.getInstance(args[0]);

if(f!=null)

{

f.eat();

}

}

};

运行过程及结果:

C:\\Users\\zhuguanjin\\Desktop>javac ShiYong_GongChangMoShi_WanShan.java

C:\\Users\\zhuguanjin\\Desktop>java apple

**吃苹果**

C:\\Users\\zhuguanjin\\Desktop>java orange

**吃橘子**

ShiYong_GongChangMoShi_WanShan

ShiYong_GongChangMoShi_WanShan

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ryyc.cn 版权所有 湘ICP备2023022495号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务