码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-工厂方法模式

时间:2020-01-20 13:17:32      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:return   制造   简单   保留   desc   get   苹果   拓展   factor   

返回上一级目录:Java设计模式

工厂方法模式,是对简单工厂模式的升级,将创建产品的工厂抽象出来,具体产品的创建延时到工厂子类去实现,让调用者决定来创建哪一个实例。工厂方法模式有以下角色:抽象产品接口,抽象工厂接口,具体产品,具体工厂。

类关系图如下:

技术图片

 

 抽象产品接口,定义产品的行为

/**
 * @Author zhouw
 * @Description 产品(手机)接口
 * @Date 2020-01-17
 */
public interface IPhone {

    void play();
}

具体产品,具体产品的实现,可以有多个

public class HuaweiPhone implements IPhone {

    @Override
    public void play() {
        System.out.println("我是华为手机");
    }
}
public class SumsungPhone implements IPhone {

    @Override
    public void play() {
        System.out.println("我是三星手机");
    }
}

抽象工厂接口,只有一个接口定义,就是生产产品(做手机)

/**
 * @Author zhouw
 * @Description 产品(手机)工厂接口
 * @Date 2020-01-17
 */
public interface IPhoneFactory {

    IPhone makePhone();

}

具体工厂,工厂接口的实现,生成对应的具体产品,一般都是和具体产品实现类一一对应的

/**
 * @Author zhouw
 * @Description 华为工厂制造华为手机
 * @Date 2020-01-17
 */
public class HuaweiFactory implements IPhoneFactory {

    @Override
    public IPhone makePhone() {
        return new HuaweiPhone();
    }
}
/**
 * @Author zhouw
 * @Description 三星工厂制造三星手机
 * @Date 2020-01-17
 */
public class SumsungFactory implements IPhoneFactory {

    @Override
    public IPhone makePhone() {
        return new SumsungPhone();
    }
}

最后就是应用了,想要华为手机就用华为手机工厂生产,想用三星手机就用三星手机工厂生产,自己选择对应工厂子类去创建产品对象,还可以随时添加一种产品,比如说苹果手机,就再加一个苹果手机的具体实现和苹果手机工厂的工厂子类。

public class Application {

    public static void main(String[] args) {
        // 制造华为手机
        HuaweiFactory huaweiFactory = new HuaweiFactory();
        IPhone phone1 = huaweiFactory.makePhone();
        phone1.play();

        // 制造三星手机
        SumsungFactory sumsungFactory = new SumsungFactory();
        IPhone phone2 = sumsungFactory.makePhone();
        phone2.play();
    }
}

输出:

技术图片

 

总结

工厂方法模式是简单工厂模式的升级,保留了简单工厂模式获取对象的便利性外,还增加了拓展性,易用性,调用者不需要知道获取具体产品的参数(产品名,代码等),只管找对应的产品工厂要就行了,自己选择对应工厂子类去创建产品对象,还可以随时添加一种产品,比如说苹果手机,就再加一个苹果手机的具体实现和苹果手机工厂的工厂子类。

返回上一级目录:Java设计模式

设计模式-工厂方法模式

标签:return   制造   简单   保留   desc   get   苹果   拓展   factor   

原文地址:https://www.cnblogs.com/zhou-920644981/p/12217403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!