您的位置:首页 > 其它

创建模式—抽象工厂模式

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: