参考资料:
RUNOOB.COM http://www.runoob.com/design-pattern/
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
应用实例:
1.Hibernate换数据库只需要换方言和驱动。
优点:
1.调用者创建对象,只需要知道名称
2.屏蔽了产品的实现,调用者只关心接口
3.Java中的JDBC
Connection conn=DriverManager.getConnection(“jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=DB;user=sa;password=”);
Statement statement=conn.createStatement();
ResultSet rs=statement.executeQuery(“select * from UserInfo”);
使用场景:
1.日志记录器,记录可能记录到本地硬盘、系统事件、远程服务器等。
2.数据库访问
3.设计一个服务器连接的框架
步骤:
1.创建接口
2.创建实现接口的实体
3.创建一个工厂,生成给定信息的实体类的对象
4.使用该工厂,通过传递类型信息来获取实体类的对象
参考上述链接写的示例代码如下:
Animal接口
public interface Animal {
void speak();
}
实现接口的Cat 、Dog、Wolf
public class Cat implements Animal{
@Override
public void speak() {
System.out.println("mew");
}
}
public class Dog implements Animal{
@Override
public void speak() {
System.out.println("bark");
}
}
public class Wolf implements Animal{
@Override
public void speak() {
System.out.println("howl");
}
}
工厂类:
public class AnimalFactory {
public Animal getAnimal(String animalName){
if(animalName == null)
return null;
if(animalName.equals("CAT"))
return new Cat();
if(animalName.equals("DOG"))
return new Dog();
if(animalName.equals("WOLF"))
return new Wolf();
return null;
}
}
使用示例:
public class AnimalFactoryDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
AnimalFactory animalFactory = new AnimalFactory();
Animal cat = animalFactory.getAnimal("CAT");
cat.speak();
Animal dog = animalFactory.getAnimal("DOG");
dog.speak();
Animal wolf = animalFactory.getAnimal("WOLF");
wolf.speak();
}
}