设计模式之工厂设计模式

对于工厂设计模式,我对其的理解为作为一个统一调度的一个类,去实现其他类在实现同一个接口的情况下。下面来看代码:

//统一接口

package Factory;

public interface Sender {
    public void Send();
}
 

//实现接口的方法

package Factory;

public class QqSend implements Sender{
    @Override
    public void Send() {
        System.out.println("this is  a  qqinfo");
    }
}
 

package Factory;

public class SendEmail implements Sender{
    @Override
    public void Send() {
        System.out.println("this is sendEmail !");
    }
}

//创建工厂类

package Factory;

public class Factory {
    public Sender produce(String tips){
        if("QQ".equals(tips)){
            return new QqSend() ;
        }
        
        if("email".equals(tips)){
            return new SendEmail() ;
        }
        System.out.println("输入错误");
        return null;
    }

}
 

//实现工厂类

package Factory;

public class Test {
    public static void main(String[] args) {
        Factory factory = new Factory() ;
        Sender sender = factory.produce("QQ") ;
        sender.Send();
    }
}
 

这是一个简单的工厂类,能按照输入的字符串进行选择性实现接口,但是如果字符输入错误,那就没有办法执行,这个时候我们可以直接把gong工厂模式中的方法设置为静态方法。只需要:

package Factory;

public class Factory {
    public static Sender email(){
        return new SendEmail();
    }
    public static Sender QQ(){
        return new QqSend() ;
    }
}

实现

package Factory;

public class Test {
    public static void main(String[] args) {
        Factory factory = new Factory() ;
        Sender sender = factory.email() ;
        sender.Send();
    }
}
 

这样就实现了基本的用法,一般情况下,选择静态工厂方法。

猜你喜欢

转载自blog.csdn.net/qq_37186247/article/details/82796830