学习中设计模式的总结

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

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

1,单例模式🎄

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

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

写法:

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

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

1,单例模式之饿汉式

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

class Food {
    //    1.构造器私有化,目的是不让子类直接的new
    private Food() {
    }

    //    2.定义一个私有的类变量,来存储对象的引用
    private static Food food = new Food();

    //    3,定义一个类方法,去返回创建好的对象
    public static Food getFood() {
        return food;
    }
}

2,单例模式之懒汉式

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

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,模板模式🎍

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

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

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

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~~~
posted @ 2023-02-25 09:55  yfs1024  阅读(25)  评论(0)    收藏  举报