轉載請註明出處:http://blog.csdn.net/lhy_ycu/article/details/39784403
抽象工廠模式(Abstract Factory):抽象工廠--顧名思義,就是把工廠抽象出來,不同的工廠生產不同的產品。這樣做有個好處:一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的代碼。
一、uml建模圖:
二、代碼實現
/**
* 示例:抽象工廠--顧名思義,就是把工廠抽象出來,不同的工廠生產不同的產品
*
* 優點:一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的代碼
*/
interface Sender {
public void send();
}
class EmailSender implements Sender {
@Override
public void send() {
System.out.println("this is a email...");
}
}
class SmsSender implements Sender {
@Override
public void send() {
System.out.println("this is a sms...");
}
}
/**
* 角色:抽象工廠
*/
interface AbstractFactory {
public Sender produce();
}
/**
* 郵件工廠
*/
class EmailSendFactory implements AbstractFactory {
@Override
public Sender produce() {
return new EmailSender();
}
}
/**
* 短信工廠
*/
class SmsSendFactory implements AbstractFactory {
@Override
public Sender produce() {
return new SmsSender();
}
}
/**
* 客戶端測試類
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
/**
* 創建工廠
*/
AbstractFactory factory = new SmsSendFactory();
/**
* 生產產品
*/
Sender sender = factory.produce();
/**
* 執行業務邏輯
*/
sender.send();
}
}
三、總結
如果你現在想增加一個功能:給特別關注的好友發信息,則只需做一個實現類,實現Sender接口,同時做一個工廠類,實現AbstractFactory接口,就可以了,無需修改現有代碼。這樣做拓展性較好!