抽象工厂模式:提供一个创建一系列对象的接口,并且不需要指定它们的类,降低耦合。
结构:
抽象产品:一个接口,定义具体产品必须实现的方法
具体产品:实现抽象产品,实现具体的方法
抽象工厂:一个接口,负责定义若干个抽象方法
具体工厂:实现抽象工厂,实现具体的方法并且返回具体产品的实例。
该模式的优点:可以使用户和创建这些对象的类实现脱欧耦,也可以随时添加“具体工厂”,为我们提供一组相关的对象。
抽象产品:
package com.nantian.user.abstractFactory;
public interface Book {
String getName();
}
具体产品:
package com.nantian.user.abstractFactory;
public class JavaBook implements Book{
public String getName() {
// TODO Auto-generated method stub
return "JavaBook";
}
}
package com.nantian.user.abstractFactory;
public class WebBook implements Book{
public String getName() {
// TODO Auto-generated method stub
return "WebBook";
}
}
抽象工厂:
package com.nantian.user.abstractFactory;
public interface AbstractFactory {
Book getBook();
}
具体工厂:
package com.nantian.user.abstractFactory;
public class JavaBookFactory implements AbstractFactory{
public Book getBook() {
return new JavaBook();
}
}
package com.nantian.user.abstractFactory;
public class WebBook Factory implements AbstractFactory{
public Book getBook() {
return new WebBook ();
}
}
测试类:
package com.nantian.user.abstractFactory;
public class Test {
public static void main(String[] args) {
AbstractFactory jbook = new JavaBookFactory();
String bookName = jbook.getBook().getName();
System.out.println(bookName);
}
}