本文主要是介绍java设计模式之工厂模式--普通工厂方法模式(Factory Method),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
2.先定义一个接口:
package com.zhong.pattern.factorymethod;
/*** 发送接口* @author admin**/
public interface Sender {/*** 发送消息方法* @param msg*/void send(String msg);
}
3.编写实现Sender接口的类
package com.zhong.pattern.factorymethod;
/*** 短信发送* @author admin**/
public class SmsSender implements Sender {@Overridepublic void send(String msg) {System.out.println("发送短信"+msg);}}
package com.zhong.pattern.factorymethod;
/*** 邮件发送实现* @author admin**/
public class EmailSender implements Sender { @Override
public void send(String msg) {
System.out.println("发送邮件"+msg);
}
}
4.定义工厂类
package com.zhong.pattern.factorymethod;/*** 工厂类* @author admin**/
public class SenderFactory {/*** 根据类型返回对象* @param type* @return*/public Sender produce(String type) { if ("email".equals(type)) { return new EmailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("请输入正确的类型!"); return null; } }
}
5.编写客户端代码
package com.zhong.pattern.factorymethod;
/*** * @author admin**/
public class SenderFactoryTest {public static void main(String[] args) {SenderFactory sf = new SenderFactory();Sender emailSender = sf.produce("email");emailSender.send("邮件");Sender smsSender = sf.produce("sms");smsSender.send("短信");}}
6.缺点:违反设计思想中开闭原则。因为如果新增一个Sender接口的实现类的话,都需要改变SenderFactory的实现。
这篇关于java设计模式之工厂模式--普通工厂方法模式(Factory Method)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!