设计模式-工厂模式

来源:互联网 发布:iphone闪存检测软件 编辑:程序博客网 时间:2024/06/03 15:42

上面写过单例模式,下面准备把我知道的几个模式都给复述出来。

工厂模式:实例化对象,用工厂方法代替new操作,包括工厂方法模式和抽象工厂模式,后者是前者的扩展。

目的:定义一个接口来创建对象,但是让子类来决定那些类需要被实例化,工厂方法吧实例化的工作推迟到子类中去实现。

范围“:有一组类似的对象需要创建,在编码是不能遇见需要创建那种类的实例,系统需要考虑扩展性。

动机:尽量低耦合,产品和客户端分离。

工厂方法模式:

Car接口:

package v;public interface Car {public void car();}
奔驰:
package v;public class Bezn implements Car {@Overridepublic void car() {// TODO Auto-generated method stub        System.out.println("奔驰");}}

宝马:
package v;public class BMW implements Car {@Overridepublic void car() {// TODO Auto-generated method stub        System.out.println("宝马");}}

工厂:

package v;/* * 汽车工厂,帮我生成汽车,而不用我们去调用生成汽车 */public class CarFactory {  //反射机制可以根据根据类的名称来生成累的实例 Spring里面的SessionFactory  public static Car getCar2(String className) throws InstantiationException, IllegalAccessException, ClassNotFoundException{  Car car=(Car) Class.forName(className).newInstance();        return car;   }}

测试:

package v;public class Client {public static void main(String[] args) {try {CarFactory.getCar2("v.BMW").car();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}



原创粉丝点击