设计模式之抽象工厂模式
2017-08-14 11:25
323 查看
抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
从定义中可知,我们是要创建一个接口,而这个接口是干嘛的呢,是为了创建一组相关或者相互依赖的对象,而且我们创建的对象不是具体的类,也就是说我们创建的是一个接口或者一个抽象类。
UML:
具体实现
产品代码实现:
interface ProductA {
void methodA();
}
interface ProductB {
void methodB();
}
class ProductA1 implements ProductA{
public void methodA() {
System.out.println("产品A系列中1型号产品的方法");
}
}
class ProductA2 implements ProductA{
public void methodA() {
System.out.println("产品A系列中2型号产品的方法");
}
}
class ProductB1 implements ProductB{
public void methodB() {
System.out.println("产品B系列中1型号产品的方法");
}
}
class ProductB2 implements ProductB{
public void methodB() {
System.out.println("产品B系列中2型号产品的方法");
}
}
public class ConcreteCreator1 implementsCreator{
public ProductA createProductA() {
return new ProductA1();
}
public ProductB createProductB() {
return new ProductB1();
}
}
工厂实现:
public interface Creator {
ProductA createProductA();
ProductB createProductB();
}
class ProductB2 implements ProductB{
public void methodB() {
System.out.println("产品B系列中2型号产品的方法");
}
}
public class ConcreteCreator1 implementsCreator{
public ProductA createProductA() {
return new ProductA1();
}
public ProductB createProductB() {
return new ProductB1();
}
}
public class ConcreteCreator2 implementsCreator{
public ProductA createProductA() {
return new ProductA2();
}
public ProductB createProductB() {
return new ProductB2();
}
}
public class Client {
public static void main(String[] args) throws Exception {
Creator creator = new ConcreteCreator1();
ProductA productA = creator.createProductA();
ProductB productB = creator.createProductB();
productA.methodA();
productB.methodB();
creator = new ConcreteCreator2();
productA = creator.createProductA();
productB = creator.createProductB();
productA.methodA();
productB.methodB();
}
}
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
从定义中可知,我们是要创建一个接口,而这个接口是干嘛的呢,是为了创建一组相关或者相互依赖的对象,而且我们创建的对象不是具体的类,也就是说我们创建的是一个接口或者一个抽象类。
UML:
具体实现
产品代码实现:
interface ProductA {
void methodA();
}
interface ProductB {
void methodB();
}
class ProductA1 implements ProductA{
public void methodA() {
System.out.println("产品A系列中1型号产品的方法");
}
}
class ProductA2 implements ProductA{
public void methodA() {
System.out.println("产品A系列中2型号产品的方法");
}
}
class ProductB1 implements ProductB{
public void methodB() {
System.out.println("产品B系列中1型号产品的方法");
}
}
class ProductB2 implements ProductB{
public void methodB() {
System.out.println("产品B系列中2型号产品的方法");
}
}
public class ConcreteCreator1 implementsCreator{
public ProductA createProductA() {
return new ProductA1();
}
public ProductB createProductB() {
return new ProductB1();
}
}
工厂实现:
public interface Creator {
ProductA createProductA();
ProductB createProductB();
}
class ProductB2 implements ProductB{
public void methodB() {
System.out.println("产品B系列中2型号产品的方法");
}
}
public class ConcreteCreator1 implementsCreator{
public ProductA createProductA() {
return new ProductA1();
}
public ProductB createProductB() {
return new ProductB1();
}
}
public class ConcreteCreator2 implementsCreator{
public ProductA createProductA() {
return new ProductA2();
}
public ProductB createProductB() {
return new ProductB2();
}
}
public class Client {
public static void main(String[] args) throws Exception {
Creator creator = new ConcreteCreator1();
ProductA productA = creator.createProductA();
ProductB productB = creator.createProductB();
productA.methodA();
productB.methodB();
creator = new ConcreteCreator2();
productA = creator.createProductA();
productB = creator.createProductB();
productA.methodA();
productB.methodB();
}
}
相关文章推荐
- 设计模式(二)之抽象工厂模式(Abstract Factory) C++实现
- 设计模式--抽象工厂模式
- 设计模式学习笔记五:抽象工厂模式
- 2.设计模式-Abstract Factory 抽象工厂模式
- java设计模式(三)--抽象工厂模式
- 举例讲解Python设计模式编程的代理模式与抽象工厂模式
- JAVA设计模式☞☞工厂方法模式和抽象工厂模式区别
- 设计模式-抽象工厂模式
- 设计模式学习(创建型模式)—抽象工厂模式(Abstract Factory)
- C#面向对象的设计模式 抽象工厂模式
- Net设计模式之抽象工厂模式(Abstract Factory Pattern)
- Python的创建型设计模式之抽象工厂模式
- 设计模式之抽象工厂模式
- 设计模式之简单工厂模式,工厂模式,抽象工厂模式学习总结
- 设计模式之(二)——抽象工厂模式
- .Net设计模式之抽象工厂模式(转载)
- 设计模式(十)------23种设计模式(3):抽象工厂模式
- java设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- 设计模式-抽象工厂模式(Abstract Factory)
- 设计模式之(十一、抽象工厂模式Abstract Factory)