工厂模式 数据库 Java_java 工厂模式的两种实现

Thinking in Java(7)

1.1 Java工厂模式(不适用匿名类)

public interface Service {

public void method1();

public void method2();

}

public interface ServiceFactory {

public Service getService();

}

import java.io.*;

class Factory1 implements Service{

Factory1() {}

@Override

public void method1() {

// TODO Auto-generated method stub

System.out.println("工厂1生产了1号产品");

}

@Override

public void method2() {

// TODO Auto-generated method stub

System.out.println("工厂1生产了2号产品");

}

}

class Factory1Service implements ServiceFactory {

@Override

public Service getService() {

// TODO Auto-generated method stub

return new Factory1();

}

}

class Factory2 implements Service {

@Override

public void method1() {

// TODO Auto-generated method stub

System.out.println("工厂2生产了1号产品");

}

@Override

public void method2() {

// TODO Auto-generated method stub

System.out.println("工厂2生产了2号产品");

}

}

class Factory2Service implements ServiceFactory {

@Override

public Service getService() {

// TODO Auto-generated method stub

return new Factory2();

}

}

public class Factories1 {

public static void go(ServiceFactory servicefactory) {

Service serv = servicefactory.getService();

serv.method1();

serv.method2();

}

public static void main(String[] args) {

go(new Factory1Service());

go(new Factory2Service());

}

}

1.2 使用匿名类的实现

注意将工厂构造函数设为私有, 个人觉得这种方式很优雅

import java.io.*;

class Factory3 implements Service {

private Factory3() {}

@Override

public void method1() {

// TODO Auto-generated method stub

System.out.println("工厂3生产了1号产品");

}

@Override

public void method2() {

// TODO Auto-generated method stub

System.out.println("工厂3生产了2号产品");

}

public static ServiceFactory factory3 =

new ServiceFactory() {

@Override

public Service getService() {

// TODO Auto-generated method stub

return new Factory3();

}

};

}

class Factory4 implements Service {

private Factory4() {}

@Override

public void method1() {

// TODO Auto-generated method stub

System.out.println("工厂4生产了1号产品");

}

@Override

public void method2() {

// TODO Auto-generated method stub

System.out.println("工厂4生产了2号产品");

}

public static ServiceFactory factory4 =

new ServiceFactory() {

@Override

public Service getService() {

// TODO Auto-generated method stub

return new Factory4();

}

};

}

public class Factories2 {

public static void go(ServiceFactory sf) {

Service serv = sf.getService();

serv.method1();

serv.method2();

}

public static void main(String[] args) {

go(Factory3.factory3);

go(Factory4.factory4);

}

}

你可能感兴趣的:(工厂模式,数据库,Java)