抽象工厂模式:(详细:http://blog.csdn.net/liruikqn/article/details/12888511)
目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类型。意思就是通过工厂模式可以获取一个特定的对象,而不了解他是怎么被创建的。
具体说明:抽象工厂模式通常是用于创建一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品。抽象工厂模式也有四种角色:
抽象工厂、具体工厂、抽象产品和具体产品。
实现方式:
1、创建一个接口作为抽象工厂:AbstractFactory
//抽象工厂,定义了生产族产品的方法;
public interface AbstractFactory {
public ProductA factoryA();
public ProductB factoryB();
}
2、创建一个或多个接口作为抽象产品:ProductA接口和ProductB接口
//抽象产品A定义了产品的公共方法,产品A和B属于一个产品族
public interface ProductA {
public void method1();
public void method2();
}
//抽象产品B定义了产品的公共方法,产品A和B属于一个产品族
public interface ProductB {
public void method1();
public void method2();
}
3、创建具体的工厂类:ConcreteFactory1类(生产等级为1的族产品)和ConcreteFactory2类(生产等级为2的族产品)
//ConcreateFactory1是用来生产等级为1的产品A,B;
public class ConcreateFactory1 implements AbstractFactory {
//生产等级为1的产品A
@Override
public ProductA factoryA() {
return new ConcreateProductA1();
}
//生产等级为1的产品B
@Override
public ProductB factoryB() {
return new ConcreateProductB1();
}
}
//ConcreateFactory1是用来生产等级为2的产品A,B;
public class ConcreateFactory2 implements AbstractFactory {
//生产等级为2的产品A
@Override
public ProductA factoryA() {
return new ConcreateProductA2();
}
//生产等级为2的产品B
@Override
public ProductB factoryB() {
return new ConcreateProductB2();
}
}
4、具体的产品
具体产品(等级为1的A产品):ConcreteProductA1类
//等级为1的具体产品A
public class ConcreateProductA1 implements ProductA {
@Override
public void method1() {
System.out.println("等级为1的产品A的method1()");
}
@Override
public void method2() {
System.out.println("等级为1的产品A的method2()");
}
}
//同样等级为2的具体产品A
//等级为1的具体产品B
//等级为2的具体产品B
抽象工厂模式-----对象创建型模式
猜你喜欢
转载自wangxinhong4468.iteye.com/blog/2161212
今日推荐
周排行