创建模式—抽象工厂模式
2009-09-27 21:28
267 查看
一、抽象工厂模式说明:
抽象工厂模式更符合我们的日常生活和一般规律,所以,应用更加广泛。下图举例说明了抽象工厂模式:
二、抽象工厂模式设计:
根据上图的描述,抽象工厂模式可以设计如下:
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品接口一)
* @author solid
*
*/
public interface Fruit {
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品A1)
* @author solid
*
*/
public class NorthFruit implements Fruit {
private String name;
public NorthFruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品A2)
* @author solid
*
*/
public class SouthFruit implements Fruit {
private String name;
public SouthFruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品接口二)
* @author solid
*
*/
public interface Vegetable {
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品B1)
* @author solid
*
*/
public class NorthVegetable implements Vegetable {
private String name;
public NorthVegetable(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品B2)
* @author solid
*
*/
public class SouthVegetable implements Vegetable {
private String name;
public SouthVegetable(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(工厂接口)
* @author solid
*
*/
public interface Factory {
//获取水果
Fruit getFruit(String name);
//获取蔬菜
Vegetable getVegetable(String name);
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(北方工厂)
* @author solid
*
*/
public class NorthFactory implements Factory {
//单例模式
private static Factory factory = null;
private NorthFactory() {}
synchronized public static Factory getInstance() {
if(factory == null) {
factory = new NorthFactory();
}
return factory;
}
//获取北方水果
public Fruit getFruit(String name) {
return new NorthFruit(name);
}
//获取北方蔬菜
public Vegetable getVegetable(String name) {
return new NorthVegetable(name);
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(南方工厂)
* @author solid
*
*/
public class SouthFactory implements Factory {
//单例模式
private static Factory factory = null;
private SouthFactory() {}
public static Factory getInstance() {
if(factory == null) {
factory = new SouthFactory();
}
return factory;
}
//获取南方水果
public Fruit getFruit(String name) {
return new SouthFruit(name);
}
//获取南方蔬菜
public Vegetable getVegetable(String name) {
return null;
}
}
抽象工厂模式更符合我们的日常生活和一般规律,所以,应用更加广泛。下图举例说明了抽象工厂模式:
二、抽象工厂模式设计:
根据上图的描述,抽象工厂模式可以设计如下:
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品接口一)
* @author solid
*
*/
public interface Fruit {
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品A1)
* @author solid
*
*/
public class NorthFruit implements Fruit {
private String name;
public NorthFruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品A2)
* @author solid
*
*/
public class SouthFruit implements Fruit {
private String name;
public SouthFruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品接口二)
* @author solid
*
*/
public interface Vegetable {
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品B1)
* @author solid
*
*/
public class NorthVegetable implements Vegetable {
private String name;
public NorthVegetable(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(产品B2)
* @author solid
*
*/
public class SouthVegetable implements Vegetable {
private String name;
public SouthVegetable(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(工厂接口)
* @author solid
*
*/
public interface Factory {
//获取水果
Fruit getFruit(String name);
//获取蔬菜
Vegetable getVegetable(String name);
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(北方工厂)
* @author solid
*
*/
public class NorthFactory implements Factory {
//单例模式
private static Factory factory = null;
private NorthFactory() {}
synchronized public static Factory getInstance() {
if(factory == null) {
factory = new NorthFactory();
}
return factory;
}
//获取北方水果
public Fruit getFruit(String name) {
return new NorthFruit(name);
}
//获取北方蔬菜
public Vegetable getVegetable(String name) {
return new NorthVegetable(name);
}
}
package com.solid.abstractfactory;
/**
* 抽象工厂模式(南方工厂)
* @author solid
*
*/
public class SouthFactory implements Factory {
//单例模式
private static Factory factory = null;
private SouthFactory() {}
public static Factory getInstance() {
if(factory == null) {
factory = new SouthFactory();
}
return factory;
}
//获取南方水果
public Fruit getFruit(String name) {
return new SouthFruit(name);
}
//获取南方蔬菜
public Vegetable getVegetable(String name) {
return null;
}
}
相关文章推荐
- 设计模式之创建类模式——抽象工厂模式
- 设计模式--创建模式--抽象工厂模式--java
- 设计模式学习(十四)————抽象工厂模式(使用Qt框架的反射技术——根据字符串动态创建类来实现)
- java设计模式 -------- 创建模式 之 抽象工厂模式
- [置顶] 设计模式之创建类模式——抽象工厂模式
- 创建类模式3--抽象工厂模式
- 设计模式之创建类模式——抽象工厂模式
- 设计模式学习(六):产品族的创建-抽象工厂模式
- 设计模式之创建模式----抽象工厂模式
- 创建模式-抽象工厂模式
- 用来创建对象的设计模式之抽象工厂模式
- 创建模式->简单工厂模式-工厂方法模式-抽象工厂模式
- Java 设计模式之抽象工厂模式的详解(创建模式)
- 创建模式:Abstract Factory 抽象工厂模式
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- 设计模式 创建模式之抽象工厂模式
- 工厂模式 抽象工厂模式 (创建模式)
- Objective-C设计模式——抽象工厂模式Abstract Factory(对象创建)
- 设计模式之四:抽象工厂模式—产品族的创建
- java设计模式 -------- 创建模式 之 抽象工厂模式