1、簡介
最少設計原則,一個實體應當儘量少的與其他實體之間發生作用,使得系統模塊功能相對獨立。
也就是說一個軟件實體應該儘可能少的與其他實體對象發生作用。這樣,當一個模塊修改時,就會盡量少的影響其他的模塊。
我們舉一個商店買東西的例子,
就是你付錢給售貨員,然後他給你商品
一種設計模式是:
也就是 錢是屬於顧客的和顧客有關係,但是這個時候錢直接被售貨員獲取!
商品屬於屬於售貨員,但是商品直接被顧客看到,這個還可以理解哈。
但是顧客的錢可以直接被售貨員獲取是不可容忍的。應該避免他們之間的聯繫,
不然顧客豈不是很沒有安全感。
所以我們設計了下面這種模式。
這樣 售貨員就和錢沒有了直接的聯繫,顧客也感覺很安全。
2、實例展示。
- 首先有商品 Goods 類
package myapplication.lum.com.bird;
import android.util.Log;
public class Goods {
private String TAG = "TAG_Goods";
public void appile(){
Log.i(TAG,"蘋果");
}
public void orange(){
Log.i(TAG,"橘子");
}
}
2)設計售貨員的類
package myapplication.lum.com.bird;
import android.util.Log;
public class SaleMan {
private String TAG = "TAG_Saleman";
public void getPaid (){
Log.i(TAG,"獲得支付");
}
}
3) 設計錢的類
package myapplication.lum.com.bird;
import android.util.Log;
public class Charge {
private String TAG = "TAG_charges";
public void charge(){
Log.i(TAG,"give money");
}
}
4) 設計 顧客的類
package myapplication.lum.com.bird;
import android.util.Log;
public class Customer {
private String TAG = "TAG_customer";
public void getGoods(){
Log.i(TAG,"獲得商品");
Goods goods = new Goods();
goods.appile();
}
public void paycharges(){
Log.i(TAG,"付費");
Charge charge = new Charge();
charge.charge();
SaleMan saleMan = new SaleMan();
saleMan.getPaid();
}
}
5) 然後胡函數調用 顧客買東西
package myapplication.lum.com.bird;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Customer customer = new Customer();
customer.getGoods();
customer.paycharges();
}
}
log:
我們可以看到,在購買的過程中,只有顧客是去訪問錢包的,售貨員是沒有去訪問錢的,所以售貨員對顧客的錢是不知道的。
這樣即使以後我們修改了錢的相關類,並不會影響售貨員對前的獲取,減少耦合,安全。