白话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) 设计 顾客的类

扫描二维码关注公众号,回复: 11169004 查看本文章
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:
在这里插入图片描述

我们可以看到,在购买的过程中,只有顾客是去访问钱包的,售货员是没有去访问钱的,所以售货员对顾客的钱是不知道的。

这样即使以后我们修改了钱的相关类,并不会影响售货员对前的获取,减少耦合,安全。

原创文章 375 获赞 138 访问量 53万+

猜你喜欢

转载自blog.csdn.net/qq_27061049/article/details/104992327