工厂方法模式

简单工厂模式有一个问题,就是只能通过工厂代码构造特定的类型的对象。如果对象添加一个种类,那么必须修改工厂的代码。这样违背了开闭原则,因此我们讲解工厂方法模式

工厂方法模式是将工厂抽取出一个父类来,里面有一个创造对象的方法,每造一种对象写一个对应的子类工厂。这样新增子类对象就不会修改原来的代码了。

 

代码实现:

package com.zhen.build_template.factory_method;

/**
 * @author zhen
 * @Date 2019/5/28 11:13
 */
public interface Sender {
    public void send();
}

package com.zhen.build_template.factory_method;

/**
 * @author zhen
 * @Date 2019/5/28 11:13
 */
public class MailSender implements Sender {
    @Override
    public void send() {
        System.out.println("this is mailSender");
    }
}

package com.zhen.build_template.factory_method;

/**
 * @author zhen
 * @Date 2019/5/28 11:14
 */
public class SmsSender implements Sender {
    @Override
    public void send() {
        System.out.println("this is SmsSender");
    }
}

package com.zhen.build_template.factory_method;

/**
 * @author zhen
 * @Date 2019/5/28 11:32
 */
public interface SendFactory {
    Sender getSenderInstance();
}

package com.zhen.build_template.factory_method;

/**
 * @author zhen
 * @Date 2019/5/28 11:33
 */
public class SendMailFactory implements SendFactory {
    @Override
    public Sender getSenderInstance() {
        return new MailSender();
    }
}

package com.zhen.build_template.factory_method;

/**
 * @author zhen
 * @Date 2019/5/28 11:36
 */
public class SendSmsFactory implements SendFactory {
    @Override
    public Sender getSenderInstance() {
        return new SmsSender();
    }
}
工厂方法模式代码

 

posted @ 2019-05-29 10:37  guodaxia  阅读(180)  评论(0编辑  收藏  举报