学习中设计模式的总结

首先要了解什么是设计模式呢?

设计模式:可以简单的理解为两个字“经验”,就是码农们在各种需求中间,总结出来的一种最优的解法称之为设计模式;

1|01,单例模式🎄

作用: 当系统中要求某个类只有一个实例的时候可以使用单例模式

生活中的应用: 比如windows中的任务管理器,只能打开一个窗口

写法:

  1. 构造器私有化
  2. 定义一个私有的类变量记住类的一个对象
  3. 定义一个类方法,返回对象

根据对象创建的时机不同,单例模式又分为两种:
先创建的称之为饿汉式,后创建的称之为 懒汉式

1|01,单例模式之饿汉式

因为比较饥饿,所以在还没有调用方法的时候就已经把对象创建好了,具体实现代码如下:

class Food { // 1.构造器私有化,目的是不让子类直接的new private Food() { } // 2.定义一个私有的类变量,来存储对象的引用 private static Food food = new Food(); // 3,定义一个类方法,去返回创建好的对象 public static Food getFood() { return food; } }

1|02,单例模式之懒汉式

顾名思义就是什么时候用,什么时候再创建好。实现代码如下:

class Food { // 1.构造器私有化,目的是不让子类直接的new private Food() { } // 2.定义一个私有的类变量,来存储对象的引用 private static Food food; // 3,定义一个类方法,去返回创建好的对象 public static Food getFood() { // 判断如果food没有创建,这个时候再创建 if (food == null) { food = new Food(); } return food; } }

两者对比,看似只是创建对象先后的问题,但是在安全上和性能上却有一些差异

饿汉式中的对象,是在类加载的时候创建的,但是后面如果不用,那么就会导致资源的浪费。但是一般不会不用,所以饿汉式是较为常用的方式

而懒汉式,多了if语句,这样对比饿汉式,就会多了一步比较的步骤,这样在性能上就有所损耗。但是主要的原因,还是在多线程的时候,如果多个线程,同时进入到if语句中,这个时候就会创建多个对象,从而不在是单例。

2|02,模板模式🎍

作用: 提高代码的复用性,减少冗余代码

应用场景: 在子类实现父类相同的功能的时候,由于业务的大同小异,使得子类中的代码有很多相同的部分,但是在代码中又需要穿插着子类自己的代码。

这个时候就可以把父类设计为抽象类,实现如下:

1,定义一个抽象类 2,在里面定义两个方法 * 一个是模板方法,用于把相同的代码放进去 * 一个是抽象方法,用于让子类具体实现内容

举个生活中的具体的案例。比如我们一天的工作,早晨大家都一样刷牙洗脸开始,晚上以泡脚结束。。。但是每个人一天的内容不同,是自己发挥的部分。那么实现的代码就可以这样写:

父类 OneDay:

abstract class OneDay { // 大家都会做的方法 public final void EverythingInADay() { System.out.println("元气满满的一天,开始洗漱啦~~~~"); work(); System.out.println("美好的一天结束了,泡个jio~~~"); } public abstract void work(); }

子类:

class Me extends OneDay { @Override public void work() { System.out.println("上午写几百行Bug"); System.out.println("中午吃个乾隆白菜"); System.out.println("下午再改改bug"); System.out.println("回家啦~~~~~"); } }

测试类:

public class AbstractTest { public static void main(String[] args) { new Me().EverythingInADay(); } }

控制台:

元气满满的一天,开始洗漱啦~~~~ 上午写几百行Bug 中午吃个乾隆白菜 下午再改改bug 回家啦~~~~~ 美好的一天结束了,泡个jio~~~

__EOF__

本文作者尼古拉斯_帅气
本文链接https://www.cnblogs.com/yfs1024/p/17153828.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   yfs1024  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示