zoukankan      html  css  js  c++  java
  • 迪米特法则(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 + "");
            }
        }
    }
  • 相关阅读:
    关于心累的思考
    关于组件化开发的思考
    分页组建感想
    工作日记
    unload没有用
    今天很不开心
    select option
    reduce()用法
    $.each()用法
    MFC创建对话框组件对应变量并进行设置值(VS2010)
  • 原文地址:https://www.cnblogs.com/leestar54/p/5591597.html
Copyright © 2011-2022 走看看