java中简单工厂模式
来源:互联网 发布:地基承载力的简易算法 编辑:程序博客网 时间:2024/06/06 09:09
简单工厂模式,其实结合例子来说更容易理解。拿汽车举例子,Car首先是一个接口,有一些抽象的公共的方法。car1,car2……就可以实现这个接口。在做一个接口的类,将Car作为参数去判断car的类型,到底是car1,car2……。
下面看代码。
接口:
package carDemo;public interface Car { void stop(); void run();}
汽车类1:
package carDemo;public class Ford implements Car { @Override public void stop() { System.out.println("ford has stopped"); } @Override public void run() { System.out.println("ford is running"); }}
汽车类2
package carDemo;public class Bmw implements Car { @Override public void stop() { System.out.println("bmw has stopped"); } @Override public void run() { System.out.println("bmw is running"); }}
汽车的工厂类
package carDemo;public class CarFactory { public static Car getCarInstance(String type){ Car car=null; if ("ford".equalsIgnoreCase(type)) { car=new Ford(); }else if("bmw".equalsIgnoreCase(type)){ car=new Bmw(); } return car; }}
测试类
package carDemo;public class Test { public static void main(String[] args) { Car car=CarFactory.getCarInstance("BMW"); car.stop(); }}
下面改进汽车工厂类:通过反射找。
注意反射的类名的写法。Class.forName(“carDemo.”+type).newInstance();
package carDemo;public class CarFactory { public static Car getCarInstance(String type){ Car car=null; try { car=(Car) Class.forName("carDemo."+type).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return car; }}
测试类:
package carDemo;public class Test { public static void main(String[] args) { Car car=CarFactory.getCarInstance("Bmw"); if (car!=null) { car.stop(); }else{ System.out.println("sorry,please try another car brand!"); } }}
0 0
- java中简单工厂模式
- java中简单工厂模式
- java中简单工厂模式(静态工厂方法模式)
- 胡博君解Java中简单工厂模式
- Java 简单工厂模式
- java 简单工厂模式
- 简单工厂模式--Java
- Java简单工厂模式
- Java简单工厂模式
- java简单工厂模式
- java 简单工厂模式
- java 简单工厂模式
- java简单工厂模式
- 简单工厂模式(Java)
- java 简单工厂模式
- JAVA简单工厂模式
- Java简单工厂模式
- Java 简单工厂模式
- sklearn学习(模块列表)
- div模拟文本框
- 关于Robolectric对JNI的支持问题
- Unity02
- 分享一个通用的ListViewAdapter和Holder
- java中简单工厂模式
- Linux、MAC一些命令
- http
- Eclipse配置Git
- C#中List.Find 方法详解
- win32窗口样式
- navicat for mysql出错,cannot connect to server on 127.0.0.1
- android的volley框架
- Opencv的准备阶段小知识