1、模式的定義
原型模式:用原型實例指定創建的對象種類,通過復制創建新的對象
中介模式:使用中介對象封裝一系列對象的交互
2、模式的實現要點
原型模式:通過復制對象的方法來創建對象,java中只要繼承Cloneable接口,覆蓋clone()方法。
原型實例屬性都是原始類,則采用淺拷貝;原型實例屬性帶有封裝類,則采用深拷貝。(深拷貝比淺拷貝,僅僅是將再調用一下封裝類的拷貝方法,賦給拷貝類的屬性)
中介模式:定義一個中介類,并將其他對象作為中介類的屬性,將其他對象的交會封裝成幾個獨立意義的方法,供客戶端調用
3、模式的應用場景
原型模式:資源消耗,需要提高生成對象效率的場景;對線程安全要求比較高的場景,比如銀行信用卡賬單發送系統
中介模式:當一系列對象的交互形成蜘蛛網結構,通過引入中介模式,將交互梳理為星型結構,比如進銷存系統、交通調度中心、中介服務
4、實現舉例
原型模式
public class Mail implements Cloneable {
private String content;
private String subject;
private ArrayList<String> receiverList;
public void Mail(String content){
this.content = content;
}
@Override
public Mail Clone(){
Mail mail = null;
try{
Mail mail = (Mail)super.clone(); //淺拷貝
this.receiverList = (ArrayList<String>) this.receiverList.clone(); //深拷貝
} catch (CloneNotSupportException e){
}
return mail;
}
...//省略setter 和 getter 方法
}
中介者模式
public class Customer {
public void doSomething1(){
}
public void doSomething2(){
}
}
public class Saller {
public void doSomething1(){
}
public void doSomething2(){
}
}
public class Mediator {
private Customer customer;
private Saller saller;
public Mediator(Customer customer,Saller saller){
this.customer = customer;
this.saller = saller;
}
public void doSomething1(){
customer.doSomething1();
saller.doSomething1();
}
public void doSomething2(){
customer.doSomething2();
saller.doSomething2();
}
}