国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#設(shè)計模式六大原則之--迪米特法則

這篇具有很好參考價值的文章主要介紹了C#設(shè)計模式六大原則之--迪米特法則。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

設(shè)計模式六大原則是單一職責(zé)原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則、開閉原則。它們不是要我們刻板的遵守,而是根據(jù)實際需要靈活運用。只要對它們的遵守程度在一個合理的范圍內(nèi),努為做到一個良好的設(shè)計。本文主要介紹一下.NET(C#) 迪米特法則。

?

迪米特法則(Law Of Demeter)

迪米特法則(Law of Demeter)又叫作最少知識原則(The Least Knowledge Principle),一個類對于其他類知道的越少越好,就是說一個對象應(yīng)當(dāng)對其他對象有盡可能少的了解,只和朋友通信,不和陌生人說話。迪米特法則的初衷在于降低類之間的耦合。由于每個類盡量減少對其他類的依賴,因此,很容易使得系統(tǒng)的功能模塊功能獨立,相互之間不存在(或很少有)依賴關(guān)系。

迪米特法則不希望類之間建立直接的聯(lián)系。

例如,

1)一般的反面設(shè)計實現(xiàn)

using System;
using System.Collections.Generic;
namespace ConsoleApplication
{
    //學(xué)校總部員工類
    class Employee
    {
        public string Id { get; set; }
    }
    //學(xué)院的員工類
    class CollegeEmployee
    {
        public string Id { get; set; }
    }
    //管理學(xué)院員工的管理類
    class CollegeManager
    {
        //返回學(xué)院的所有員工
        public List<CollegeEmployee> getAllEmployee()
        {
            List<CollegeEmployee> list = new List<CollegeEmployee>();
            //增加了10個員工到list
            for (int i = 0; i < 10; i++)
            {
                CollegeEmployee emp = new CollegeEmployee();
                emp.Id="學(xué)院員工ID=" + i;
                list.Add(emp);
            }
            return list;
        }
    }
    //學(xué)校管理類
    class SchoolManager
    {
        //返回學(xué)??偛康膯T工
        public List<Employee> getAllEmployee()
        {
            List<Employee> list = new List<Employee>();
            for (int i = 0; i < 5; i++)
            {
                Employee emp = new Employee();
                emp.Id = "學(xué)校總部員工ID=" + i;
                list.Add(emp);
            }
            return list;
        }
        //該方法完成輸出學(xué)??偛亢蛯W(xué)院員工信息(ID)
       public void PrintAllEmployee(CollegeManager sub)
        {
            //CollegeEmployee不是SchoolManager的直接朋友
            //CollegeEmployee是以局部變量方式出現(xiàn)在SchoolManager違反了迪米特法則
            //獲取學(xué)院員工
            List<CollegeEmployee> list1 = sub.getAllEmployee();
            Console.WriteLine("===========學(xué)院員工==============");
            foreach (CollegeEmployee e in list1)
            {
                Console.WriteLine(e.Id);
            }
            //獲取學(xué)院總部員工
            List<Employee> list2 = this.getAllEmployee();
            Console.WriteLine("===========學(xué)院總部員工==============");
            foreach (Employee e in list2)
            {
                Console.WriteLine(e.Id);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建一個SchoolManager對象
            SchoolManager schoolManager = new SchoolManager();
            //輸出學(xué)院的員工ID和學(xué)??偛康膯T工信息
            schoolManager.PrintAllEmployee(new CollegeManager());
            Console.ReadKey();
        }
    }
}

?2)迪米特法則的實現(xiàn)

using System;
using System.Collections.Generic;
namespace ConsoleApplication
{
    //學(xué)??偛繂T工類
    class Employee
    {
        public string Id { get; set; }
    }
    //學(xué)院的員工類
    class CollegeEmployee
    {
        public string Id { get; set; }
    }
    //管理學(xué)院員工的管理類
    class CollegeManager
    {
        //返回學(xué)院的所有員工
        public List<CollegeEmployee> getAllEmployee()
        {
            List<CollegeEmployee> list = new List<CollegeEmployee>();
            //增加了10個員工到list
            for (int i = 0; i < 10; i++)
            {
                CollegeEmployee emp = new CollegeEmployee();
                emp.Id = "學(xué)院員工ID=" + i;
                list.Add(emp);
            }
            return list;
        }
        //輸出學(xué)院員工的信息
        public void printEmployee()
        {
            //獲取到學(xué)院員工
            List<CollegeEmployee> list1 = getAllEmployee();
            Console.WriteLine("===========學(xué)院員工==============");
            foreach (CollegeEmployee e in list1)
            {
                Console.WriteLine(e.Id);
            }
        }
    }
    //學(xué)校管理類
    class SchoolManager
    {
        //返回學(xué)??偛康膯T工
        public List<Employee> getAllEmployee()
        {
            List<Employee> list = new List<Employee>();
            for (int i = 0; i < 5; i++)
            {
                Employee emp = new Employee();
                emp.Id = "學(xué)??偛繂T工ID=" + i;
                list.Add(emp);
            }
            return list;
        }
        //該方法完成輸出學(xué)??偛亢蛯W(xué)院員工信息(ID)
       public void PrintAllEmployee(CollegeManager sub)
        {
            //將輸出學(xué)院員工方法,封裝到CollegeManager
            sub.printEmployee();
            //獲取學(xué)院總部員工
            List<Employee> list2 = this.getAllEmployee();
            Console.WriteLine("===========學(xué)院總部員工==============");
            foreach (Employee e in list2)
            {
                Console.WriteLine(e.Id);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建一個SchoolManager對象
            SchoolManager schoolManager = new SchoolManager();
            //輸出學(xué)院的員工ID和學(xué)??偛康膯T工信息
            schoolManager.PrintAllEmployee(new CollegeManager());
            Console.ReadKey();
        }
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-670354.html

到了這里,關(guān)于C#設(shè)計模式六大原則之--迪米特法則的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C#設(shè)計模式之--六大原則 開閉原則

    設(shè)計模式六大原則是單一職責(zé)原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則、開閉原則。它們不是要我們刻板的遵守,而是根據(jù)實際需要靈活運用。只要對它們的遵守程度在一個合理的范圍內(nèi),努為做到一個良好的設(shè)計。本文主要介紹一下.NET(C#) 開閉原則

    2024年02月10日
    瀏覽(26)
  • 設(shè)計模式之六大設(shè)計原則

    設(shè)計模式之六大設(shè)計原則

    學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識點… 一個人摸索學(xué)習(xí)很難堅持,想組團高效學(xué)習(xí)… 想寫博客但無從下手,急需寫作干貨注入能量… 熱愛寫作,愿意讓自己成為更好

    2024年02月02日
    瀏覽(21)
  • 設(shè)計模式】引言-六大設(shè)計原則

    ● 概念:僅有一個引起其變化的原因。 ● 個人理解:一個類中應(yīng)該是一組相關(guān)性很高的函數(shù)及數(shù)據(jù)的封裝 主觀性較強,和起名一樣困難,一個方法放在ClassA合理還是放在ClassB合理? ● 概念:一個軟件實體應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。即軟件實體應(yīng)盡量在不修改原有代碼

    2023年04月24日
    瀏覽(20)
  • 設(shè)計模式的六大設(shè)計原則

    一個類只負(fù)責(zé)一個單一明確的職責(zé)。如果一個類同時負(fù)責(zé)多個職責(zé),來自職責(zé)A的需求變更引起的修改可能會導(dǎo)致職責(zé)B的功能發(fā)生故障。 比如說一個類T原本是符合單一職責(zé)的,后來因為某種原因或者是需求變更了,需要將職責(zé)P細分為顆粒度更細的職責(zé)P1和職責(zé)P2,這時候可以

    2024年02月09日
    瀏覽(31)
  • 設(shè)計模式——設(shè)計模式以及六大原則概述

    設(shè)計模式——設(shè)計模式以及六大原則概述

    設(shè)計模式代表有經(jīng)驗的面向?qū)ο筌浖_發(fā)人員使用的最佳實踐。 設(shè)計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。 這些解決方案是由許多軟件開發(fā)人員在相當(dāng)長的時間內(nèi)通過試錯獲得的。 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四

    2024年02月13日
    瀏覽(22)
  • 設(shè)計模式的六大原則

    設(shè)計模式的六大原則

    1、單一職責(zé)原則,其核心就是控制類的粒度大小、將對象解耦、提高其內(nèi)聚性; 2、開閉原則,可以通過“抽象約束、封裝變化”來實現(xiàn)(對擴展開放(提供方),對修改關(guān)閉(使用方),遵循其他規(guī)則最終就是遵循開閉原則,所以開閉是最重要的一個原則); 3、里氏替換

    2024年02月09日
    瀏覽(17)
  • (學(xué)習(xí)打卡2)重學(xué)Java設(shè)計模式之六大設(shè)計原則

    (學(xué)習(xí)打卡2)重學(xué)Java設(shè)計模式之六大設(shè)計原則

    ???前言:聽說有本很牛的關(guān)于Java設(shè)計模式的書——重學(xué)Java設(shè)計模式,然后買了(*^▽^*) 開始跟著小傅哥學(xué)Java設(shè)計模式吧,本文主要記錄筆者的學(xué)習(xí)筆記和心得。 打卡!打卡! 單一職責(zé)原則、開閉原則、里氏替換原則、迪米特法則、接口隔離原則、依賴倒置原則。 (引讀:

    2024年02月03日
    瀏覽(29)
  • 二十四種設(shè)計模式與六大設(shè)計原則(三):【裝飾模式、迭代器模式、組合模式、觀察者模式、責(zé)任鏈模式、訪問者模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點

    二十四種設(shè)計模式與六大設(shè)計原則(三):【裝飾模式、迭代器模式、組合模式、觀察者模式、責(zé)任鏈模式、訪問者模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點

    接上次博客:二十四種設(shè)計模式與六大設(shè)計原則(二):【門面模式、適配器模式、模板方法模式、建造者模式、橋梁模式、命令模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點-CSDN博客 目錄 裝飾模式【Decorator Pattern】 定義 舉例說明 核心思想 適用場景 優(yōu)缺點 迭代

    2024年04月17日
    瀏覽(25)
  • 6大設(shè)計規(guī)則-迪米特法則

    tip: 作為程序員一定學(xué)習(xí)編程之道,一定要對代碼的編寫有追求,不能實現(xiàn)就完事了。我們應(yīng)該讓自己寫的代碼更加優(yōu)雅,即使這會費時費力。 相關(guān)規(guī)則: 推薦: 體系化學(xué)習(xí)Java(Java面試專題) 1.6大設(shè)計規(guī)則-接口隔離原則 2.6大設(shè)計原則-里氏替換原則 3.6大設(shè)計規(guī)則-開閉原則

    2024年02月07日
    瀏覽(14)
  • 迪米特法則

    迪米特法則,也稱為最少知識原則(Law of Demeter),是面向?qū)ο笤O(shè)計中的一個原則,旨在降低對象之間的耦合性,提高系統(tǒng)的可維護性和可擴展性。該原則強調(diào)一個類不應(yīng)該直接與其它不相關(guān)的類相互交互,而是通過少數(shù)幾個密切相關(guān)的類來進行通信。這有助于減少類之間的

    2024年02月12日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包