看看定义吧
一个对象对其他的对象要保持最少的了解。
什么是最少的了解呢?应该是被调用类的所能够提供的public方法多少,如果提供的比较多的话,那么了解相对就比较多。
为什么要保持最少的了解呢?
其实最重要的是降低耦合,咱们先看个例子。
//产品经理
class ProductManager{
private Coder coder = new Coder();
public String buildProduct(){
if(!coder.developService()){
return "后台开发出现问题";
}
if(!coder.developClient()){
return "客户端开发出现问题";
}
return "产品开发完成了";
}
}
//程序员
class Coder{
public boolean developService(){}
public boolean developClient(){}
}
//大老板
class Boss{
private ProductManager productManager = new ProductManager();
public void useProduct(){
System.out.println(productManager.buildProduct());
}
}
一个很简单的情景,产品经理设计好产品之后,让程序员,进行开发,然后大boss去向产品经理检查产品。
产品经理:”boss,后台出现问题了“
老板:“后台具体出现什么问题了?”
产品经理:“不知道”
老板:“fk,还不赶紧给我问”
产品经理大怒,赶紧换了一种工作方式。
class Coder{
//由原来的boolean换成int,产品经理根据不同的code,知道具体出现什么问题
public int developService(){}
public int developClient(){}
}
一旦coder两个方法的返回值改成了int,那么产品经理的方法只要引用到boolean的方法都需要进行修改,这就是因为产品经理对程序员的工作了解太多了,导致的。
产品经理:“boss,你还是招聘一个CTO吧,我懒得和程序员沟通了,我只要和CTO沟通就行了。”
//产品经理
class ProductManager{
private CTO cto = new CTO();
public boolean check(){
return cto.buildProduct()==null;
}
}
class CTO{
private Coder coder = new Coder();
public String buildProduct(){
switch(coder.developService()){
case 101:
return "错误原因:XXXX"
case 102:
return "错误原因:XXXX"
case 103:
return "错误原因:XXXX"
}
switch(coder.developClient()){
case 101:
return "错误原因:XXXX"
case 102:
return "错误原因:XXXX"
case 103:
return "错误原因:XXXX"
}
return null;
}
}
class Coder{
public boolean developService(){}
public boolean developClient(){}
}
//大老板
class Boss{
private ProductManager productManager = new ProductManager();
private CTO cto = new CTO();
public void useProduct(){
if(!productManager.check()){
System.out.println(cto.buildProduct());
}else{
System.out.println("bingo,开发完成了!");
}
}
}
看到这里,程序员多了一个CTO的包装类,并且产品经理只了解CTO的一个方法,至于CTO怎么管理程序员的开发,他压根不需要了解,只要告诉我开发完成了没有。
网友评论