美文网首页Android开发经验谈Java设计模式Android技术知识
<Java设计模式>——最少知识原则(LKP)产品经

<Java设计模式>——最少知识原则(LKP)产品经

作者: 元涛 | 来源:发表于2017-09-22 23:21 被阅读143次
    看看定义吧

    一个对象对其他的对象要保持最少的了解。

    什么是最少的了解呢?应该是被调用类的所能够提供的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怎么管理程序员的开发,他压根不需要了解,只要告诉我开发完成了没有。

    相关文章

      网友评论

        本文标题:<Java设计模式>——最少知识原则(LKP)产品经

        本文链接:https://www.haomeiwen.com/subject/tuffextx.html