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) 设计 顾客的类
扫描二维码关注公众号,回复:
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:
我们可以看到,在购买的过程中,只有顾客是去访问钱包的,售货员是没有去访问钱的,所以售货员对顾客的钱是不知道的。
这样即使以后我们修改了钱的相关类,并不会影响售货员对前的获取,减少耦合,安全。