首页 > 其他 > 详细

设计模式之 抽象工厂模式

时间:2021-09-03 23:37:12      阅读:19      评论:0      收藏:0      [点我收藏+]

工厂模式针对单个维度进行分类,抽象工厂模式针对多个维度进行分类。

 

示例

技术分享图片

(1)第1类产品接口及实现类的定义

public interface Phone{
    String call();
}

public class PhoneApple implements Phone{
    @Override
    public String call(){
        return "call somebody by apple phone";
    }
}

public class PhoneHuawei implements Phone{
    @Override
    public String call(){
        return "call somebody by huawei phone";
    }
}

(2)第2类产品接口及实现类的定义

public interface Computer{
    String internet();
}

public class ComputerApple implements Computer{
    @Override
    public String internet(){
        return "surf the internet by apple computer";
    }
}

public class ComputerHuawei implements Computer{
    @Override
    public String internet(){
        return "surf the internet by huawei computer";
    }
}

(3)工厂定义

public abstract class AbstractFactory{
    public abstract Phone createPhone(String brand);
    public abstract Computer createComputer(String brand);
}

public class PhoneFactory extends AbstractFactory{
    @Override
    public Phone createPhone(String brand){
        if("huawei".equals(brand)){
            return new PhoneHuawei();
        }else if("apple".equals(brand)){
            return new PhoneApple();
        }else{
            return null;
        }
    }
    
    @Override
    public Computer createComputer(String brand){
        return null;
    }
}

public class ComputerFactory extends AbstractFactory{
    @Override
    public Phone createPhone(String brand){
        return null;
    }
    
    @Override
    public Computer createComputer(String brand){
        if("huawei".equals(brand)){
            return new ComputerHuawei();
        }else if("apple".equals(brand)){
            return new ComputerApple();
        }else{
            return null;
        }
    }
}

(4)使用抽象工厂

AbstractFactory phoneFactory = new PhoneFactory();
Phone phoneHuawei = phoneFactory.createPhone("huawei");
Phone phoneApple = phoneFactory.createPhone("apple");
logger.info(phoneHuawei.call());
logger.info(phoneApple.call());

AbstractFactory computerFactory = new ComputerFactory();
Computer computerHuawei = computerFactory.createComputer("huawei");
Computer computerApple = computerFactory.createComputer("apple");
logger.info(computerHuawei.internet());
logger.info(computerApple.internet());

 

 

 

 

 

 

 

 

 

 

 

 

 


技术分享图片

设计模式之 抽象工厂模式

原文:https://www.cnblogs.com/betterwgo/p/15222437.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!