轉載:http://blog.csdn.net/zhangerqing
設計模式(Design Patterns)
可複用面向對象軟件的基礎
1.設計模式:反覆使用,爲多數人知曉的,經過分類編目的,代碼設計的總結
2.可重用代碼,讓代碼更容易讓人理解,保證代碼的可靠性,使代碼編程工程化
3.設計模式的分類:
3.1創建型模型:工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式
3.2結構型模型:適配器模式,裝飾器模式,代理模式,外觀者模式,橋接模式,組合模式,享元模式
3.3行爲性模型:策略模式,模板方法模式,觀察者模式,迭代子模式,責任鏈模式,命令模式,備忘錄模式,狀態模式,訪問者模式,中介者模式,解釋器模式
3.4併發型模式,線程池模式
4.1工廠方法模型(Factory Method)
4.1.1普通工廠模式:建立一個工廠類,對實現了同一接口的類,進行實例的創建
例如創建發送郵件的例子
public interface Sender {
public void Send();
}
其次,創建實現類
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!");
}
}
public class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
最後創建工廠類
public class SendFactory {
public Sender produce(String type) {
if ("mail".equals(type)) {
return new MailSender();
} else if ("sms".equals(type)) {
return new SmsSender();
} else {
System.out.println("請輸入正確的類型!");
return null;
}
}
}
創建測試類
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produce("sms");
sender.Send();
}
}
4.1.2多個工廠方法模式:對普通工廠方法模式的改進,在普通工廠方法的模式中,如果傳遞的字符串出錯,則不能正確的創建對象,而多個工廠方法模式則提供了多個工廠方法,分別創建對象:
public Sender produceMail(){
return new MailSender();
}
public Sender produceSms(){
return new SmsSender();
}
}
測試類如下:
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produceMail();
sender.Send();
}
}
public class SendFactory {
public static Sender produceMail(){
return new MailSender();
}
public static Sender produceSms(){
return new SmsSender();
}
}
public class FactoryTest {
public static void main(String[] args) {
Sender sender = SendFactory.produceMail();
sender.Send();
}
}