白话模板设计模式

背景介绍

我们来举个例子,流水线组装电脑,你要组装不同配置的电脑,机箱,主板,内存,硬盘,CPU。不同的配置,但是其框架都是一样的,只是配置可能不同,我们只需要将改变的部分抽象出来,在子类中去做。

定义

定义一个算法的框架,,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的接口,即可定义该算法的某些特定的步骤。

这句话,我们可以这么理解,我们具体业务中,肯定会遇到业务集齐相似,但是只是在加载不同场景时有区别,这时候我们可以提取相似业务,在父类中处理,然后将子类个性的部分作为抽线函数,在子类中具体实现。设计基类的目的,就是把初始等公共做出在父类中做了,子类只负责它自己必须要做的就可以了。

下面是举例子的UML,我们通过它来实现一个。

模板设计模式uml

public abstract class Computer {
    public void Box() {
        System.out.println("HP同一机箱");
    }

    public void Broad() {
        System.out.println("HP同一主板");
    }

    public abstract void RAM();

    public abstract void ROM() ;

    public abstract void CPU();

    public void construct() {
        Box();
        Broad();
        RAM();
        ROM();
        CPU();
    }
}
public class HPV1Computer extends Computer {
    @Override
    public void RAM() {
        System.out.println("16G");
    }

    @Override
    public void ROM() {
        System.out.println("256G");
    }

    @Override
    public void CPU() {
        System.out.println("I5 CPU");
    }
}
public class HPV2Computer extends Computer {

    @Override
    public void RAM() {
        System.out.println("8G内存");
    }

    @Override
    public void ROM() {
        System.out.println("128G存储");
    }

    @Override
    public void CPU() {
        System.out.println("I7 CPU");
    }
}
public class User {
    public static void main(String args[]) {
        Computer macComputer = new MacComputer();
        Computer hpComputer = new HPComputer();
        macComputer.construct();
        hpComputer.construct();
    }
}

模板模式实现起来特别简单,难就难在如何将具体的场景抽象出来,并在父类处理好。

优点:

1.封装不变部分,扩展可变部分。

2.提取公共共性,即公共部分代码,便于维护

3.行为由父类控制,子类实现。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术人Howzit

钱不钱的无所谓,这是一种鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值