前言 :
Simple Factory模式又稱Static Factory模式。一個Simple Factory生產成品,而對客戶端隱藏產品產生的細節,物件如何生成,生成前是否與其它物件建立依賴關係,客戶端皆不用理會,用以將物件生成方式之變化 與客戶端程式碼隔離.
Simple Factory 模式 :
假設今天,您要建立一個 Message 物件,這個 Message 物件會有一連串的物件實例化與依賴關係建立流程 :
- Session session = someWhere.getSession();
- Message msg = new MimeMessage(session);
- msg.setFrom(new InternetAddress(session.from));
- msg.setSubject(session.subject);
- msg.setText(session.text);
- msg.setHeader(session.headerName, session.headerValue);
- msg.setDate(session.date);
- ...
- mailService.send(msg);
- public class MessageFactory {
- public static Message getMessage(Session session) {
- Message msg = new MimeMessage(session);
- msg.setFrom(new InternetAddress(session.from));
- msg.setSubject(session.subject);
- msg.setText(session.text);
- msg.setHeader(session.headerName, session.headerValue);
- msg.setDate(session.date);
- ...
- return msg;
- }
- }
- Session session = someWhere.getSession();
- Message message = MessageFactory.getMessage(session);
- mailService.send(message);
UML 類別圖中,傳回型態 Product 意指的是具有 Product 所定義之公開協定(物件上的公開方法)的物件,而不是專指 Java 中的 interface 定義.
Simple Factory 使用靜態方法來簡單地隱藏物件建立細節。撇開靜態方法不談,隱藏物件建立的細節仍是 Factory 模式的重點,可將這個模式推至極緻,而成為一種通用、專門用來生成物件、建立依賴關係、甚至具備管理物件生命週期職責的輕量級容器.