java设计模式——工厂方法模式

来源:互联网 发布:全景图拼合软件 编辑:程序博客网 时间:2024/06/06 18:25

工厂方法模式就是当大量的对象需要创建时,而且它们具有相同的行为特征,也就是具有相同的父接口时,可以通过工厂方法模式来设计。

具体的例子

package com.kunde.factoryMethod;/** * 所有工厂的父接口 * Created by lihao on 2017/12/8. */public interface GlobalFactory {    Sender  produce();}

package com.kunde.factoryMethod;/** * 相同行为特征的父接口 * Created by lihao on 2017/12/8. */public interface Sender {    void send();}

package com.kunde.factoryMethod;/** * Created by lihao on 2017/12/8. */public class SmsFactory implements GlobalFactory {    @Override    public Sender produce() {        return new SmsSender();    }}
package com.kunde.factoryMethod;/** * Created by lihao on 2017/12/8. */public class MailFactory implements GlobalFactory {    @Override    public Sender produce() {        return new MailSender();    }}

package com.kunde.factoryMethod;/** * Created by lihao on 2017/12/8. */public class SmsSender implements Sender{    @Override    public void send() {        System.out.println("发送sms消息。");    }}

package com.kunde.factoryMethod;import java.io.Serializable;import java.util.Comparator;/** *  * Created by lihao on 2017/12/8. */public class MailSender implements Sender {    @Override    public void send() {        System.out.println("发送mail消息。");    }}

package com.kunde.factoryMethod;import java.io.Serializable;import java.util.Comparator;/** * 测试类 * Created by lihao on 2017/12/8. */public class TestFactoryMethod {    public static void main(String[] args) {        GlobalFactory factory = new SmsFactory();        Sender sender = factory.produce();        sender.send();    }}
输出结果:
发送sms消息。


总结:如上代码可以看出,工厂方法模式有如下特点:

一个抽象产品类,可以派生出多个具体的产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每一个具体工厂类只能创建一个具体的产品类实例。