设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding

Posted 1446358788-qq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding相关的知识,希望对你有一定的参考价值。

1    课程讲解

1.1  定义

1.2  特质

1.3  重点

2    代码演练

2.1  反例

2.2  正例

 

 

1    课程讲解

 

1.1  定义

定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则。

 

1.2  特质

核心:降低类的耦合

优点:降低类的耦合

 

1.3  重点

只和朋友交流,不和陌生人说话

朋友:出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。

 

2    代码演练

 2.1  反例

测试类:

package com.geely.design.principle.demeter;

public class TestDemeter 
    public static void main(String [] args)
        //testNegated
        BossNegated bossNegated = new BossNegated();
        bossNegated.commandTecherCountCours();

        //testPositive
        //BossPositive bossPositive = new BossPositive();
        //bossPositive.commandTecherCountCours();
    

 

测试结果:

书的总数量为:20

Process finished with exit code 0

 

老板类:

package com.geely.design.principle.demeter;

import java.util.ArrayList;
import java.util.List;

/**
 * 此处设计不合理,只访问朋友类(成员变量中的类,输入中出现的类,输出中出现的类)
 * 成员方法中的类不需要引入(CourseNegated)
 */
public class BossNegated 
    public void commandTecherCountCours()
        TecherNegated teacher = new TecherNegated();
        List<CourseNegated> list = new ArrayList<CourseNegated>();
        for(int i= 0;i<20;i++)
            list.add(new CourseNegated());
        
        teacher.countCourse(list);

    

 

老师类:

package com.geely.design.principle.demeter;

import java.util.List;

public class TecherNegated 
    public void countCourse(List list)
        System.out.println("书的总数量为:"+list.size());
    

 

课程类:

package com.geely.design.principle.demeter;


/**
 */
public class CourseNegated 

 

2.2  正例

测试类:

package com.geely.design.principle.demeter;

public class TestDemeter 
    public static void main(String [] args)
        //testNegated
        //BossNegated bossNegated = new BossNegated();
        //bossNegated.commandTecherCountCours();

        //testPositive
        BossPositive bossPositive = new BossPositive();
        bossPositive.commandTecherCountCours();
    

 

测试结果:

"C:\Program Files\Java\jdk1.6.0_43\bin\java.exe" "-javaagent:D:\java\devolopKit\idea\anZh\IntelliJ IDEA Community Edition 2018.1.4\lib\idea_rt.jar=5695:D:\java\devolopKit\idea\anZh\IntelliJ IDEA Community Edition 2018.1.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.6.0_43\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_43\jre\lib\rt.jar;F:\xiangmu3\Xin\Idea\out\production\design_pattern" com.geely.design.principle.demeter.TestDemeter
书的总数量为:20

Process finished with exit code 0

 

老板类:

package com.geely.design.principle.demeter;
/**
 *
 */
public class BossPositive 
    public void commandTecherCountCours()
        TecherPositive teacher = new TecherPositive();
        teacher.countCourse();
    

 

老师类:

package com.geely.design.principle.demeter;

import java.util.ArrayList;
import java.util.List;

public class TecherPositive 
    public void countCourse()
        List<CourseNegated> list = new ArrayList<CourseNegated>();
        for(int i= 0;i<20;i++)
            list.add(new CourseNegated());
        
        System.out.println("书的总数量为:"+list.size());
    

 

课程类:

package com.geely.design.principle.demeter;

/**
 */
public class CourseNegated 

 

以上是关于设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding的主要内容,如果未能解决你的问题,请参考以下文章

设计模式课程 设计模式精讲 3-4 依赖倒置原则讲解+coding

设计模式课程 设计模式精讲 3-9 里氏替换原则讲解

设计模式之美——DRY原则 和 迪米特法则

设计模式之美——DRY原则 和 迪米特法则

面向对象设计原则八:迪米特原则

软件架构设计原则-迪米特原则