web设计大作业代码_23张图+10个代码块跟着故事读懂设计模式6大原则

学好武功,心法是多么的重要。像是那些练错心法的,比如欧阳锋大叔,心法错了,走火入魔了,死在华山之巅。还有些必先自宫的武功,没准后面一页就说上一页是不需要的。所以6大原则,大家也把心法吃透,才能练好武功啊。

首先看下设计模式6大原则的概览。

  • 1、开闭原则 | 对扩展开放,对修改关闭。
  • 2、里氏代换原则 | 子类都可以做到代替基类的出现。
  • 3、依赖倒转原则 | 针对接口编程,依赖于抽象而非具体。
  • 4、接口隔离原则 | 使用多个隔离的接口,比使用单个接口要好。(降低类之间的耦合度)
  • 5、迪米特法则(最少知道原则)| 一个实体应当尽量少地与其他实体之间发生相互作用。
  • 6、单一职责 | 一个类应该只有一个引起它变化的原因,一个职责。

当然这么看还是太抽象了,下面会分4天(4篇)小漫画+代码的形式详细来讲解~

第一天

85e990af335b52f09b30894d3a563f74.png

上次链接:设计模式开篇

5ee81c9041f248f692796a4ed52d7b69.png
public class Animal {   public void eat() {       System.out.println("eat something");   }   public void sleep() {       System.out.println("sleeping ~~");   }}复制代码
b68f23546afe839675322f841627858e.png
public void eat (String kind) {    if (kind.equals("rabbit")) {        System.out.println("eat some carmine");    }    if (kind.equals("tigger")) {        System.out.println("eat some meat");    }}复制代码
e4d429d39884b3f0e9aadd6f1cb00b09.png
a826692661119a2131b324f856e4e8de.png
public class Rabbit extends Animal {   public void eat() {       System.out.println("eat some carmine");     }}复制代码
8fa5af4cc56b264e91e6e65d84684b3e.png
6e7e5191e04d89fd14618a1a53319471.png
public class Cooker {   public void cook(Potato potato) {       System.out.println("开始做菜了");       System.out.println(potato.getFood());   }}class Potato {   public String getFood() {       return "酸辣土豆丝";   }}复制代码
7adece6bb90059340a3069425978cb1e.png
public interface FoodMaterial {   String getFood();}class Potato implements FoodMaterial{   @Override   public String getFood() {       return "酸辣土豆丝";   }}class Chicken implements FoodMaterial{   @Override   public String getFood() {       return "可乐鸡翅";   }}public class Cooker {   public void cook(FoodMaterial foodMaterial) {       System.out.println("开始做菜了");       System.out.println(foodMaterial.getFood());   }   public static void main (String []args) {       Cooker cooker = new Cooker();       cooker.cook(new Potato());   }}复制代码
c3f789828db46b0c18fc13069c49b294.png

第二天

3ab256e2669a7fab7f6221be14e77796.png
8e895b95fac25fb2ee74167a0d692f56.png
public interface EmployService {   void sign (); //打卡   void knockCode();//敲代码   void recruit(); //招聘   void relationShip(); //员工关系   void performanceEvaluation(); //绩效管理   void procedureDesign(); //程序设计   void makeBugs(); //哈哈哈}public class HrServiceImpl implements EmployService{   @Override   public void sign() {       System.out.println("打卡");        }   @Override   public void knockCode() {   }   @Override   public void recruit() {     System.out.println("招聘");          }   @Override   public void relationShip() {     System.out.println("员工关系");          }   @Override   public void performanceEvaluation() {     System.out.println("绩效考核");   }   @Override   public void procedureDesign() {   }   @Override   public void makeBugs() {   }}public class ProgrammerServiceImpl implements EmployService {   @Override   public void sign() {       System.out.println("打卡");   }   @Override   public void knockCode() {       System.out.println("敲代码");   }   @Override   public void recruit() {   }   @Override   public void relationShip() {   }   @Override   public void performanceEvaluation() {   }   @Override   public void procedureDesign() {       System.out.println("程序设计");   }   @Override   public void makeBugs() {       System.out.println("造点bug");   }}public class ProgrammerClient {   public void sign (EmployService employService) {       employService.sign();   }   public void knockCode(EmployService employService) {       employService.knockCode();   }   public void procedureDesign(EmployService employService) {       employService.procedureDesign();   }   public void makeBugs(EmployService employService) {       employService.makeBugs();   }}public class HrClient {   public void sign (EmployService employService) {       employService.sign();   }   public void performanceEvaluation(EmployService employService) {       employService.performanceEvaluation();   }   public void recruit(EmployService employService) {       employService.recruit();   }   public void relationShip(EmployService employService) {       employService.relationShip();   }}复制代码
9bf46aa1933b7a0b59c98c0bed6c27b7.png
public interface EmployService {   void sign(); //打卡}public interface HrService {   void recruit(); //招聘   void relationShip(); //员工关系   void performanceEvaluation(); //绩效管理}public class HrServiceImpl implements HrService,EmployService{   @Override   public void sign() {       System.out.println("打卡");   }   @Override   public void recruit() {       System.out.println("招聘");   }   @Override   public void relationShip() {       System.out.println("员工关系");   }   @Override   public void performanceEvaluation() {       System.out.println("绩效管理");   }}public interface ProgrammerService {   void knockCode();//敲代码   void procedureDesign(); //程序设计   void makeBugs(); //哈哈哈}public class ProgrammerServiceImpl implements ProgrammerService,EmployService {   @Override   public void sign() {       System.out.println("签到");   }   @Override   public void knockCode() {       System.out.println("敲代码");   }   @Override   public void procedureDesign() {       System.out.println("程序设计");   }   @Override   public void makeBugs() {       System.out.println("造点bug");   }}复制代码
015e53c0afd31d40b9edcd34f10b458b.png
67d6a327bf68d86d7b5451fdecc6e7e9.png

第三天

7b109f869c70473da83cbeb42fc57e41.png
public interface CarService{   String getName ();   void drive ();   String color();}public class Sedan implements CarService {   private String name;   private String color;   private int speed;   public Sedan(String name, String color,int speed{       this.name = name;       this.color = color;       this.speed = speed;   }   @Override   public String getName() {       return this.name;   }   @Override   public void drive() {       System.out.println("普通的小车普通的开" + this.speed);   }   @Override   public String color() {       return this.color;   }}复制代码
c52576dd27af07fb6571b2a6cfddc806.png
public class FastSedan extends Sedan {   public FastSedan(String name, String color, int speed) {       super(name, color, speed);   }   public void drive() {       System.out.println("飙车的飙,飙起来" + this.getSpeed() * 2);   }}复制代码
09dc15d5471c02fbbddfd48bb14a4fc9.png
public class Boss {   //发布任务给cto   public void pushJob(CTO cto) {       List list = new ArrayList();       for (int i = 0;i < 5;i++) {           list.add(new Programmer());       }       cto.assignmentTask(list);   }}public class CTO {   //分配任务   public void assignmentTask(List programmers) {       for (Programmer programmer:programmers) {           programmer.backPot();       }   }}public class Programmer {   //背锅   public void backPot () {       System.out.println("程序员背起了小锅");   }}public class Client {   public static void main (String []args) {       Boss boss = new Boss();       boss.pushJob(new CTO());   }}复制代码
b6bd89fa472ed72f50a16ae78f541a03.png

最后一天

我们来巩固一下
4d0924012d0ed4e47a7b9e76523cb647.png
189b90ffa61edb213869dd409d9e322d.png
146946be5b9f2ae3e331ee29a191050e.png
316b97e7ef5e8fff65a59f45ef153caa.png
99a927696e48ffb1608902fbfae7f11b.png

公众号「Java小咖秀」,专注Java领域 , 和小伙伴们一起学习进步~


作者:Java小咖秀
链接:https://juejin.im/post/5f0727826fb9a07e894ab243

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值