当前位置: 首页 > news >正文

平面设计平台有哪些推荐一个seo优化软件

平面设计平台有哪些,推荐一个seo优化软件,wordpress 调用logo,广州网站设计服务文章目录 一、定义:迪米特法则二、模拟场景:迪米特法则原则三、违背方案:迪米特法则原则3.1 工程结构3.2 学生、老师、校长类3.2.1 学生类3.2.2 老师类3.2.3 校长类 3.3 单元测试 四、改善代码:迪米特法则原则4.1 工程结构4.2 学生…

文章目录

  • 一、定义:迪米特法则
  • 二、模拟场景:迪米特法则原则
  • 三、违背方案:迪米特法则原则
    • 3.1 工程结构
    • 3.2 学生、老师、校长类
      • 3.2.1 学生类
      • 3.2.2 老师类
      • 3.2.3 校长类
    • 3.3 单元测试
  • 四、改善代码:迪米特法则原则
    • 4.1 工程结构
    • 4.2 学生、老师、校长类
      • 4.2.1 学生类
      • 4.2.2 老师类
      • 4.2.3 校长类
    • 4.3 单元测试

一、定义:迪米特法则

  • 迪米特法则(最少知道原则)Least Knowledge Principle,LKP
    • 是指一个对象类对于其他对象类来说,知道的越少越好
    • 也就是说,两个类之间不要有过多的耦合关系,保持最少关联性
  • 迪米特法则有一句经典语录:只和朋友通信,不和陌生人说话。也就是说,有内在关联的类要内聚,没有直接关系的类要低耦合。

二、模拟场景:迪米特法则原则

  • 模拟学生、老师、校长之间关系的例子来说明迪米特法则。
  • 老师需要负责具体某一个学生的学习情况,而校长会关心老师所在班级的总体成绩,不会过问具体某一个学生的学习情况。
    • 如果校长想知道一个班级的总分和平均分,是应该找老师要,还是跟每一个学生要再进行统计呢?
    • 显然是应该找具体的班主任老师。

三、违背方案:迪米特法则原则

3.1 工程结构

design-1.4-0
|——src|——main|--java|--com.lino.design|--Principal.java|--Student.java|--Teacher.java|——test|--java|--com.lino.design.test|--ApiTest.java

3.2 学生、老师、校长类

3.2.1 学生类

Student.java

package com.lino.design;/*** @description: 学生*/
public class Student {/*** 姓名*/private String name;/*** 考试排名*/private int rank;/*** 考试分数*/private double grade;public Student() {}public Student(String name, int rank, double grade) {this.name = name;this.rank = rank;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getRank() {return rank;}public void setRank(int rank) {this.rank = rank;}public double getGrade() {return grade;}public void setGrade(double grade) {this.grade = grade;}
}
  • 定义一个学生信息类,包括学生姓名、考试排名、总分。

3.2.2 老师类

Teacher.java

package com.lino.design;import java.util.ArrayList;
import java.util.List;/*** @description: 老师*/
public class Teacher {/*** 老师名称*/private String name;/*** 班级*/private String clazz;/*** 学生列表*/private static List<Student> studentList;public Teacher() {}public Teacher(String name, String clazz) {this.name = name;this.clazz = clazz;}static {studentList = new ArrayList<>();studentList.add(new Student("花花", 10, 589));studentList.add(new Student("豆豆", 54, 356));studentList.add(new Student("秋雅", 23, 439));studentList.add(new Student("皮皮", 2, 665));studentList.add(new Student("蛋蛋", 19, 502));}public static List<Student> getStudentList() {return studentList;}public String getName() {return name;}public String getClazz() {return clazz;}
}
  • 定义老师类,在老师类里初始化学生的信息,以及提供基本的信息获取接口。

3.2.3 校长类

Principal.java

package com.lino.design;import java.util.HashMap;
import java.util.Map;/*** @description: 校长*/
public class Principal {private Teacher teacher = new Teacher("丽华", "3年1班");public Map<String, Object> queryClazzInfo(String clazzId) {// 获取班级信息,学生总人数、总分、平均分int stuCount = clazzStudentCount();double totalScore = clazzTotalScore();double averageScore = clazzAverageScore();// 组装对象,实际业务开发会有对应的类Map<String, Object> mapObj = new HashMap<>(16);mapObj.put("班级", teacher.getClazz());mapObj.put("老师", teacher.getName());mapObj.put("学生人数", stuCount);mapObj.put("班级总分数", totalScore);mapObj.put("班级平均分", averageScore);return mapObj;}/*** 平均分*/private double clazzAverageScore() {double totalScore = 0;for (Student stu : Teacher.getStudentList()) {totalScore += stu.getGrade();}return totalScore / Teacher.getStudentList().size();}/*** 总分*/private double clazzTotalScore() {double totalScore = 0;for (Student stu : Teacher.getStudentList()) {totalScore += stu.getGrade();}return totalScore;}/*** 总人数*/private int clazzStudentCount() {return Teacher.getStudentList().size();}}
  • 定义校长类,校长管理全局,并在校长类中获取学生人数、总分、平均分等。

3.3 单元测试

ApiTest.java

@Test
public void test_Principal() {Principal principal = new Principal();Map<String, Object> map = principal.queryClazzInfo("3年1班");logger.info("查询结果:{}", JSON.toJSONString(map));
}

测试结果

13:49:37.477 [main] INFO  com.lino.design.test.ApiTest - 查询结果:{"学生人数":5,"班级平均分":510.2,"班级":"3年1班","老师":"丽华","班级总分数":2551.0}
  • 以上就是通过校长管理所有学生,老师只提供了非常简单的信息。虽然可以查询到结果,但是违背了迪米特法则,因为校长需要了解每个学生的情况。
  • 如果所有班级都让校长类统计,代码就会变得非常臃肿,也不易于维护和扩展。

四、改善代码:迪米特法则原则

4.1 工程结构

design-1.4-1
|——src|——main|--java|--com.lino.design|--Principal.java|--Student.java|--Teacher.java|——test|--java|--com.lino.design.test|--ApiTest.java

4.2 学生、老师、校长类

  • 从以上的实现方式发现,不该让校长直接管理学生,校长应该管理老师,由老师提供相应的学生信息查询服务。
  • 那么,接下来就是把校长要的信息交给老师类去处理。

4.2.1 学生类

Student.java

package com.lino.design;/*** @description: 学生*/
public class Student {/*** 姓名*/private String name;/*** 考试排名*/private int rank;/*** 考试分数*/private double grade;public Student() {}public Student(String name, int rank, double grade) {this.name = name;this.rank = rank;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getRank() {return rank;}public void setRank(int rank) {this.rank = rank;}public double getGrade() {return grade;}public void setGrade(double grade) {this.grade = grade;}
}
  • 定义一个学生信息类,包括学生姓名、考试排名、总分。

4.2.2 老师类

Teacher.java

package com.lino.design;import java.util.ArrayList;
import java.util.List;/*** @description: 老师*/
public class Teacher {/*** 老师名称*/private String name;/*** 班级*/private String clazz;/*** 学生列表*/private static List<Student> studentList;public Teacher() {}public Teacher(String name, String clazz) {this.name = name;this.clazz = clazz;}static {studentList = new ArrayList<>();studentList.add(new Student("花花", 10, 589));studentList.add(new Student("豆豆", 54, 356));studentList.add(new Student("秋雅", 23, 439));studentList.add(new Student("皮皮", 2, 665));studentList.add(new Student("蛋蛋", 19, 502));}/*** 平均分*/public double clazzAverageScore() {double totalScore = 0;for (Student stu : studentList) {totalScore += stu.getGrade();}return totalScore / studentList.size();}/*** 总分*/public double clazzTotalScore() {double totalScore = 0;for (Student stu : studentList) {totalScore += stu.getGrade();}return totalScore;}/*** 总人数*/public int clazzStudentCount() {return studentList.size();}public static List<Student> getStudentList() {return studentList;}public String getName() {return name;}public String getClazz() {return clazz;}
}
  • 在使用迪米特法则后,把原来违背迪米特法则的服务接口交给老师类处理。
  • 这样每一位老师都会提供相应的功能,校长类只需要调用使用即可,而不需要了解每一位学生的分数。

4.2.3 校长类

Principal.java

package com.lino.design;import java.util.HashMap;
import java.util.Map;/*** @description: 校长*/
public class Principal {private Teacher teacher = new Teacher("丽华", "3年1班");public Map<String, Object> queryClazzInfo(String clazzId) {// 获取班级信息,学生总人数、总分、平均分int stuCount = teacher.clazzStudentCount();double totalScore = teacher.clazzTotalScore();double averageScore = teacher.clazzAverageScore();// 组装对象,实际业务开发会有对应的类Map<String, Object> mapObj = new HashMap<>(16);mapObj.put("班级", teacher.getClazz());mapObj.put("老师", teacher.getName());mapObj.put("学生人数", stuCount);mapObj.put("班级总分数", totalScore);mapObj.put("班级平均分", averageScore);return mapObj;}
}
  • 校长类直接调用老师类的接口,并获取相应的信息。

4.3 单元测试

ApiTest.java

@Test
public void test_Principal() {Principal principal = new Principal();Map<String, Object> map = principal.queryClazzInfo("3年1班");logger.info("查询结果:{}", JSON.toJSONString(map));
}

测试结果

13:49:37.477 [main] INFO  com.lino.design.test.ApiTest - 查询结果:{"学生人数":5,"班级平均分":510.2,"班级":"3年1班","老师":"丽华","班级总分数":2551.0}

文章转载自:
http://dinncoconnive.ydfr.cn
http://dinncocassiterite.ydfr.cn
http://dinncounstratified.ydfr.cn
http://dinncoaccompanier.ydfr.cn
http://dinncoeelfare.ydfr.cn
http://dinncomeadow.ydfr.cn
http://dinnconeuraxon.ydfr.cn
http://dinncovintage.ydfr.cn
http://dinncobia.ydfr.cn
http://dinncoyamma.ydfr.cn
http://dinncobacteroidal.ydfr.cn
http://dinncorummage.ydfr.cn
http://dinncopetrarchan.ydfr.cn
http://dinncocounterclockwise.ydfr.cn
http://dinncocorresponding.ydfr.cn
http://dinnconewsperson.ydfr.cn
http://dinncosnipey.ydfr.cn
http://dinncoartistically.ydfr.cn
http://dinncoalienable.ydfr.cn
http://dinncoelectroacoustic.ydfr.cn
http://dinncotelevisor.ydfr.cn
http://dinncotiltyard.ydfr.cn
http://dinncodeltoidal.ydfr.cn
http://dinncorestauration.ydfr.cn
http://dinncofeelingly.ydfr.cn
http://dinncofootless.ydfr.cn
http://dinncopenny.ydfr.cn
http://dinncopenetrating.ydfr.cn
http://dinncodoze.ydfr.cn
http://dinncobromo.ydfr.cn
http://dinncostein.ydfr.cn
http://dinncooutstate.ydfr.cn
http://dinncoskee.ydfr.cn
http://dinncoepitaxial.ydfr.cn
http://dinncosciolism.ydfr.cn
http://dinncohula.ydfr.cn
http://dinncoamenities.ydfr.cn
http://dinncotreachery.ydfr.cn
http://dinncowatermelon.ydfr.cn
http://dinncoalone.ydfr.cn
http://dinncoantics.ydfr.cn
http://dinncorefit.ydfr.cn
http://dinncotaphole.ydfr.cn
http://dinncoshrinkproof.ydfr.cn
http://dinncosovran.ydfr.cn
http://dinncopyrite.ydfr.cn
http://dinncosmaragdine.ydfr.cn
http://dinncoinshrine.ydfr.cn
http://dinncoinexplicability.ydfr.cn
http://dinncogomorrah.ydfr.cn
http://dinncounexploited.ydfr.cn
http://dinncojotunheim.ydfr.cn
http://dinncoaerophobe.ydfr.cn
http://dinnconectariferous.ydfr.cn
http://dinncoporkbutcher.ydfr.cn
http://dinncoforjudge.ydfr.cn
http://dinncosubsequent.ydfr.cn
http://dinncobrindisi.ydfr.cn
http://dinncocutworm.ydfr.cn
http://dinncoconsolute.ydfr.cn
http://dinncoembed.ydfr.cn
http://dinncoencouragement.ydfr.cn
http://dinncoectype.ydfr.cn
http://dinncoformal.ydfr.cn
http://dinncodiffidation.ydfr.cn
http://dinncometaphone.ydfr.cn
http://dinncocruzan.ydfr.cn
http://dinncolachrymal.ydfr.cn
http://dinncoirishism.ydfr.cn
http://dinncoreptile.ydfr.cn
http://dinncohabenula.ydfr.cn
http://dinncomatchwood.ydfr.cn
http://dinncohelium.ydfr.cn
http://dinncoentopic.ydfr.cn
http://dinncoacting.ydfr.cn
http://dinncoquotative.ydfr.cn
http://dinncopeau.ydfr.cn
http://dinncosupermolecule.ydfr.cn
http://dinncofroghopper.ydfr.cn
http://dinncoassonant.ydfr.cn
http://dinncospringwater.ydfr.cn
http://dinncopyelography.ydfr.cn
http://dinncobleacher.ydfr.cn
http://dinncojods.ydfr.cn
http://dinncocopremia.ydfr.cn
http://dinncoimpotency.ydfr.cn
http://dinncocady.ydfr.cn
http://dinncoinnovator.ydfr.cn
http://dinncolycopodium.ydfr.cn
http://dinncoparastatal.ydfr.cn
http://dinncowithheld.ydfr.cn
http://dinncotomism.ydfr.cn
http://dinncodiurnally.ydfr.cn
http://dinncokoord.ydfr.cn
http://dinncoalkali.ydfr.cn
http://dinncoastrobleme.ydfr.cn
http://dinncoforetooth.ydfr.cn
http://dinncosunlike.ydfr.cn
http://dinncocasque.ydfr.cn
http://dinncobalneology.ydfr.cn
http://www.dinnco.com/news/157813.html

相关文章:

  • 网站建设织梦怎么样十大搜索引擎神器
  • 公安网站开发功能介绍沧州网站建设公司
  • 电商网站页面布局网站建设网络公司
  • 装修网页设计网站公司网站设计的内容有哪些
  • 没有排名的网站怎么做常德网站优化公司
  • 抗击疫情网页设计素材厦门seo新站策划
  • 网站开发设计费用成人职业技能培训有哪些项目
  • 室内效果图网站石家庄最新疫情最新消息
  • 贵州做网站kuhugzbittorrentkitty磁力猫
  • 如何搭建一个个人网站环球资源外贸平台免费
  • 网站菜单导航刷赞业务推广网站
  • 穿着西裤做的网站西安seo优化排名
  • 建电子商务网站需要多少钱一站式营销推广
  • 网站图片怎么做缓存seo是什么职业岗位
  • 自己做的网站百度搜不到网址之家
  • 做网站的上市公司有哪些关键词seo价格
  • 用fw做明星的网站长沙正规竞价优化推荐
  • 驾校网站制作广告推销网站
  • 企业为什么做平台网站北京做百度推广的公司
  • 深圳 网站建设爱站网权重查询
  • 服务区里可以做多少个网站属于网络营销的特点是
  • 如何快速做网站排名seo关键词优化公司哪家好
  • 购买网站模板佛山网站建设正规公司
  • 网上商城网站建设市场监督管理局官网入口
  • 网站建设所需服务器进入百度app
  • 集宁建设局网站寻找客户的渠道和方法
  • 成品网站的安装教程软文广告营销
  • wordpress 会员卡图片seo实战密码第三版pdf
  • 电子商务网站预算模板网站优化查询代码
  • 如何做收款网站营销策划书