zoukankan      html  css  js  c++  java
  • 迪米特法则

    一、定义

    迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowledge Principle),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。英文简写为: LOD。

    二、案例

    ①、

    /**
     * @author 作者 ki16:
     * @version 创建时间:2021年7月23日 下午3:39:03
     *
     */
    
    public class LOD {
        public static void main(String[] args) {
            //海绵宝宝<--->章鱼哥<--->派大星
            
            //海绵宝宝找章鱼哥
            Spongebob spongebob = new Spongebob();
            System.out.println(spongebob.play(new OctopusBrother()));
            
            //章鱼哥找派大星
            System.out.println(new OctopusBrother().playWithPatrickStar()); 
        }
    }
    
    //海绵宝宝
    class Spongebob{public String play(OctopusBrother octopusBrother) {
            return octopusBrother.play();
        }
    }
    
    //章鱼哥
    class OctopusBrother{
        public String play(){
            return "章鱼哥";
        }
        public String playWithPatrickStar(){
            PatrickStar patrickStar = new PatrickStar();
            return patrickStar.play();
        }
        
    }
    
    //派大星
    class PatrickStar{
        public String play() {
            return "派大星";
        }
    }

    ②、与依赖倒转原则结合

    /**
     * @author 作者 ki16:
     * @version 创建时间:2021年7月23日 下午3:39:03
     *
     */
    
    public class LOD {
        public static void main(String[] args) {
                    Spongebob spongebob = new Spongebob();
                    spongebob.setOctopusBrother(new OctopusBrother());
                    System.out.println(spongebob.play(OctopusBrother.class));
                    
                    
                    spongebob.setCrabBoos(new PatrickStar());
                    System.out.println(spongebob.play(CrabBoos.class));
                    
                    
        }
    }
    
    //海绵宝宝
    class Spongebob{
        private OctopusBrother octopusBrother;
        private CrabBoos crabBoos;
        
        public OctopusBrother getOctopusBrother() {
            return octopusBrother;
        }
        public void setOctopusBrother(OctopusBrother octopusBrother) {
            this.octopusBrother = octopusBrother;
        }
        public CrabBoos getCrabBoos() {
            return crabBoos;
        }
        public void setCrabBoos(CrabBoos crabBoos) {
            this.crabBoos = crabBoos;
        }
    
        public  <T> String play(Class<T> clazz) {
            String name = clazz.getName();
            System.out.println("name=" + name);
            if ("OctopusBrother".equals(name)) {
                return octopusBrother.play();
            }else if ("CrabBoos".equals(name)) {
                return crabBoos.play();
            }
            return null;
        }
    }
    
    //章鱼哥
    class OctopusBrother{
        public String play(){
            return "章鱼哥";
        }
    }
    
    
    //蟹老板
    abstract class CrabBoos{
        abstract String play();
    }
    
    
    //派大星
    class PatrickStar extends CrabBoos{
        @Override
        String play() {
            return "派大星";
        }
    }
  • 相关阅读:
    Linux服务器上的node进程被kill问题排查
    轻松精通数据库管理之道——运维巡检系列
    30分钟带你熟练性能优化的那点儿事儿(案例说明)
    八年数据库之路的感悟
    SQL SERVER全面优化-------Expert for SQL Server 诊断系列
    入园记------我的DBA之路
    非常详细的 (VMware安装Centos7超详细过程)
    数据库自动收缩带来的严重问题
    解决数据库卡、慢,问题多,难管理——老技术的执著
    数据库优化案例——————某知名零售企业ERP系统
  • 原文地址:https://www.cnblogs.com/ki16/p/15049384.html
Copyright © 2011-2022 走看看