设计模式<工厂模式>
2018-06-16 本文已影响5人
熬夜的猫头鹰
设计模式<工厂模式>
类图
意图
定义一个具有相同行为的接口A,建立一个工厂类,对实现了A接口的一些类进行实例的创建
优点
- 一个调用者想创建一个对象,只要知道其名称就可以了。
- 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
- 屏蔽产品的具体实现,调用者只关心产品的接口
缺点
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事
实例JDK1.8
定义一个接口
public interface Sender {
public void send();
}
创建实现类
public class EmailSender implements Sender {
public void send() {
System.err.println("i am a email sender");
}
}
public class SmsSender implements Sender{
public void send() {
System.err.println("I am sms sender");
}
}
创建工厂类
public class Factory {
public Sender produce(String sender){
if("sms".equals(sender)){
return new SmsSender();
}else if("email".equals(sender)){
return new EmailSender();
}else{
System.err.println(String.format("没有此中发送方式[%s]",sender));
return null;
}
}
}
测试类
public class DemoMain {
public static void main(String[] args) {
Factory fc = new Factory();
Sender sender = fc.produce("sms");
sender.send();
}
}
consles输出
I am sms sender