• 迪米特法则(Law of Demeter)LoD


    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace LawOfDemeter
    {
        //也叫Least Knowledge Principle ,LKP(最少知识原则)
        //Only talk to your immediate friends
        //一个类应该对自己需要耦合或者调用的类知道的最少,你的内部是如何复杂都对我没关系,那是你的事,我就知道你提供这么多的public方法,我就调用这么多,其他的我一概不关心。
        class Program
        {
            //试想这么一个场景:我们去银行取钱,当然是直接找前台业务员,和他说我要取钱,然后输入一个密码即可,至于钱是如何出来的,我们应该是无法知道了,也不必知道。
            //不应该跳过业务员直接和银行打交道,在这个业务里,我们只和业务员有关系。
            static void Main(string[] args)
            {
                BankClerk bc = new BankClerk();
                bc.DrawMoney(500);
            }
        }
    
        //银行,钱从里面出,当然,出钱的过程更加复杂,我们也不必知道。
        class Bank
        {
            public void DrawMoney(int value)
            {
                Console.WriteLine("银行出钞" + value + "");
            }
        }
    
        //业务员
        class BankClerk
        {
            private Bank bank = new Bank();
            //取钱
            public void DrawMoney(int value)
            {
                //银行内部的业务逻辑应该设为私有,和我们无关,他们自己的取钱规定步骤让他们自己完成。
                //我们只管按照业务员的要求取钱即可。
                DrawMoneyFirstStep();
                DrawMoneySecondStep();
                DrawMoneyThirdStep(value);
            }
    
            //第一步
            private void DrawMoneyFirstStep()
            {
                Console.WriteLine("业务员正在查询您的存折资料");
            }
    
            //第二步
            private void DrawMoneySecondStep()
            {
                Console.WriteLine("请输入您的银行密码");
                Console.ReadLine();
                Console.WriteLine("输入成功,验证成功。");
            }
    
            //第三步
            private void DrawMoneyThirdStep(int value)
            {
                Console.WriteLine("业务员从银行钞票机取钱");
                bank.DrawMoney(value);
                Console.WriteLine("取款成功,这是您的" + value + "");
            }
        }
    }
  • 相关阅读:
    Mybatis使用map传递参数与模糊查询写法
    mybatis实现简单的crud
    普通maven项目导入mybatis依赖后找不到程序包(已解决)
    MarkDown语法学习
    CentOS 7 配置hadoop(一) 安装虚拟机(伪分布)
    CentOS 7 配置hadoop(二) 配置hdfs(伪分布)
    生成32个的字母加数字
    mysql 横变竖 竖变横
    Java实现短息验证
    spring+springmvc+mybatis+Redis的配置文件
  • 原文地址:https://www.cnblogs.com/leestar54/p/5591597.html
Copyright © 2020-2023  润新知