白話Android 設計模式之 最少知道原則

1、簡介

最少設計原則,一個實體應當儘量少的與其他實體之間發生作用,使得系統模塊功能相對獨立。

也就是說一個軟件實體應該儘可能少的與其他實體對象發生作用。這樣,當一個模塊修改時,就會盡量少的影響其他的模塊。

我們舉一個商店買東西的例子,
就是你付錢給售貨員,然後他給你商品
一種設計模式是:

在這裏插入圖片描述
也就是 錢是屬於顧客的和顧客有關係,但是這個時候錢直接被售貨員獲取!
商品屬於屬於售貨員,但是商品直接被顧客看到,這個還可以理解哈。
但是顧客的錢可以直接被售貨員獲取是不可容忍的。應該避免他們之間的聯繫,
不然顧客豈不是很沒有安全感。

所以我們設計了下面這種模式。
在這裏插入圖片描述

這樣 售貨員就和錢沒有了直接的聯繫,顧客也感覺很安全。

2、實例展示。

  1. 首先有商品 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:
在這裏插入圖片描述

我們可以看到,在購買的過程中,只有顧客是去訪問錢包的,售貨員是沒有去訪問錢的,所以售貨員對顧客的錢是不知道的。

這樣即使以後我們修改了錢的相關類,並不會影響售貨員對前的獲取,減少耦合,安全。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章