您的位置:首页 > 其它

设计模式【抽象工厂模式】

2014-09-25 23:21 363 查看
       在学习抽象工厂模式之间,我们先了解两个重要概念:产品族与产品等级。产品族,是指不同产品等级结构中,功能相关联的产品组成的家族。本文以电脑的组装为例,AMD主板、CPU组成一个家族,Intel主板、CPU组成一个家族。而这两个家族都来自两个产品级别:主板、CPU。主板与CPU对应的就是产品等级。

抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。关于工厂方法模式,可以参看:http://blog.csdn.net/mahoking/article/details/39505569。抽象工厂模式:定义了一个创建对象的接口,让子类决定实例化哪一个类。抽象工厂模式的优点是符合“开放-闭合”原则,即对修改是封闭的,对扩展是开放的。

【转载使用,请注明出处:http://blog.csdn.net/mahoking
以下是示例代码:

本例需要的两个父类,分别为AbstractFactory、CPU。

AbstractFactory

public abstract class AbstractFactory {

/**
* 生产CPU
*/
public abstract CPU produceCPU();
}

CPU

public interface CPU {

public void run();
}

CPU的两个实现子类:AMDCPU、IntelCPU。

AMDCPU

public class AMDCPU implements CPU{

@Override
public void run() {
System.out.println("AMD is running!");
}
}

IntelCPU

public class IntelCPU implements CPU{

@Override
public void run() {

System.out.println("Intel is running!");
}

}


AbstractFactory的两个继承子类:AMDFactory、IntelFactory。

AMDFactory

public class AMDFactory extends AbstractFactory{

@Override
public CPU produceCPU() {

return new AMDCPU();
}

}

IntelFactory

public class IntelFactory extends AbstractFactory{

@Override
public CPU produceCPU() {
return new IntelCPU();
}

}


测试抽象工厂模式的测试类

/**
* 抽象工厂模式测试用例
* @author Mahc
*
*/
public class TestAbstractFactory {

public static void main(String[] args) {

//创建AMD工厂
AMDFactory amdFactory = new AMDFactory();
CPU amdCpu = amdFactory.produceCPU();
amdCpu.run();

//常见Intel工厂
IntelFactory intelFactory = new IntelFactory();
CPU intelCpu = intelFactory.produceCPU();
intelCpu.run();
}
}


【转载使用,请注明出处:http://blog.csdn.net/mahoking
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: