2.抽象工廠模式(Abstract Factory)
工廠方法模式有一問題,類的創建以來工廠類,想要擴展程序,必須對工廠類進行修改,這違背了閉包原則。所以,用抽象工廠模式,創建多個工廠類,一旦需要增加新的功能,直接增加新的工廠類。
example:
public interface Sender{
public void Send();
}
兩個實現類:
public MailSender implements Sender{
@Override
public void Send(){
System.out.println("this is mailsender!");
}
}
public SmsSender implements Sender{
@Override
public void Send(){
System.out.println("this is sms sender!");
}
}
兩個工廠類:
public class SendMailFactory implements Provider {
@Override
public Sender produce(){
return new MailSender();
}
}
public class SendSmsFactory implements Provider{
@Override
public Sender produce() {
return new SmsSender();
}
}
在提供一個接口:
public interface Provider{
public Sender produce();
}
測試如下:
public class Test{
public static void main(String[] args){
Provider provider = new SendMailFactory();
Sender sender = provider.produce();
send.Send();
}
}
這個模式的好處就是,如果你想增加一個功能:XXXX;只需要做一個實現類實現Sender接口,同時在做一個工廠類事項Provider接口,無需改動現有代碼。
3.單例模式(Singleton)
Singleton是一個很常用的模式,下次再記錄。