您的位置:首页 > 编程语言 > Java开发

JAVA设计模式(抽象工厂模式)

2017-04-12 12:22 363 查看
今天开始,从新整理一下闹心java的设计模式;其实我不想去整理它,但是过一段时间老是忘记,因为。。。。不经常手敲!!

闲话少喷!!首先了解一下什么是“抽象工厂模式”,他是干什么用的哦??他用来创建一组相关或者相互依赖的对象。

抽象工厂模式都适用在怎样的使用场景呢?当需要创建的对象是一系列相互关联或相互依赖的产品族时,便可以使用抽象工厂模式。说的更明白一点,就是一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。假如各个等级结构中的实现类之间不存在关联或约束,则使用多个独立的工厂来对产品进行创建,则更合适一点。

在了解什么是抽象模式之前,我们先来了解一下什么是“产品族”、“产品结构”。因为我们在学习她的时候,会在很多地方看到。就像玩王者荣耀手游一样,我就喜欢使用大乔,嘿嘿,跑题了!!好了, 那 “产品族”、“产品结构”到底什么意思??简单的从网上整合了一下:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。

接下来,我不画图,我只上代码解释!!画图太麻烦!

先了解一下代码思路:抽象工厂模式,比如说:首先要有一个IXimiFactory工厂(产品族),工厂生产 IXimiProduct产品(产品等级结构);完成这些工作与过程需要具体的实现工厂、类和方法去实现完成;

抽象工厂(产品族):

public interface IXimiFactory {
//获取生产电脑的对象
public IXimiComputor getComputerInstance();

public IXimiPhone getPhoneInstance();

public IXimiTV getTVInstance();

public IXimiLight getLightInstance();
}


具体工厂类(产品族):

public class XimiFactory implements IXimiFactory {
@Override
public IXimiComputor getComputerInstance() {
return new XimiComputor() ;
}

@Override
public IXimiPhone getPhoneInstance() {
return new XimiPhone();
}

@Override
public IXimiTV getTVInstance() {
return new XimiTV();
}

@Override
public IXimiLight getLightInstance() {
return new XimiLight();
}
}


工厂中要生成的抽象产品(三个产品结构):

//Ximi灯泡
public interface IXimiLight {
public void productRedLight();
public void productBlueLight();
public void productSmartLight();
public void productCup();
}

//Ximi手机
public interface IXimiPhone {
public void productPhone();
}

//Ximi电视
public interface IXimiTV {
public void productTV();
}


工厂中要具体进行生产的产品(三个产品结构):
//Ximi灯泡
public class XimiLight implements IXimiLight{
@Override
public void productRedLight() {

}

@Override
public void productBlueLight() {

}

@Override
public void productSmartLight() {

}

@Override
public void productCup() {

}
}
//Ximi手机
public class XimiPhone implements IXimiPhone{

@Override
public void productPhone() {

}
}
//Ximi电视
public class XimiTV implements IXimiTV{

@Override
public void productTV() {

}
}


然后,具体怎么去生产,我们不用管!只要调用封装的方法实现即可。这样就完成了使用抽象模式实现的功能!

public class MainTest {
public static void main(String[] args){
XimiFactory ximiFactory = new XimiFactory();
ximiFactory.getComputerInstance().productComputor();
ximiFactory.getPhoneInstance().productPhone();
ximiFactory.getTVInstance().productTV();
XimiLight light = (XimiLight) ximiFactory.getLightInstance();
light.productBlueLight();
light.productRedLight();
light.productSmartLight();
light.productCup();

}
}


附图理解:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA设计模式