简单工厂设计模式主要应用了里氏代换原则,即子类可以替换其父类。接口可以被看做是父类,由于子类实现了接口当中的方法,因此可以将实现接口的具体实例看做是接口类型的对象。这样为程序提供了良好的可维护性和可扩展性。
简单工厂设计模式分为三种:
1.普通:创建工厂类,返回实现了同一个接口的具体的实例。工厂类的方法返回的是接口类型,但是返回值根据不同的参数决定返回具体哪些实例。
我们以发送邮件和短信为例,两个类都实现了send方法。可以创建一个工厂,根据不同的发送请求返回不同的具体实例。再根据这些实例进行相应的操作。具体代码如下:
接口类
public interface jeikou{
void word();
]
邮件类:
public class youjian implements jiekou {
//首先要继承接口类用implements关键字继承。
//然后声明方法,方法名要跟接口的方法名一致;
public void word(){
System.out.println("发送电子邮件");
}
}
短信类:
public class duanxin implements jiekou{
public void word(){
System.out.println("发送短信");
}
}
工厂类:
public class gongchang{
public static jiekou produce(String tybe){
switch(tybe){
case "A":
return new youjian ();
case "B":
return new duanxin();
default:
return null;
}
}
}
测试类:
public class FactoryTest {
public static void main(String[] args) {
jiekou smsSender = gongchang.produce("A");
smsSender.send();
}
}
运行结果: 发送邮件。
2.多个方法:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
接口类
public interface jeikou{
void word();
]
邮件类:
public class youjian implements jiekou {
//首先要继承接口类用implements关键字继承。
//然后声明方法,方法名要跟接口的方法名一致;
public void word(){
System.out.println("发送电子邮件");
}
}
短信类:
public class duanxin implements jiekou{
public void word(){
System.out.println("发送短信");
}
}
工厂类
public class Factory {
public static jiekou produceMail() {
return new youjian();
}
public static jiekou produceSms() {
return new duanxin();
}
}
测试代码类:
public class FactoryTest {
public static void main(String[] args) {
jiekou mailSender = gongchang.produceMail();
mailSender.send();
}
运行结果:发送邮件