day39 注解 设计模式(单例模式和工厂模式)

news2024/11/30 10:37:32

 一、注解

@Target   

@Target(ElementType.TYPE)

@Target({

                ElementType.TYPE,         

                ElementType.METHOD})

@Target({
        ElementType.TYPE,//类
        ElementType.METHOD,//方法
        ElementType.FIELD,//属性
})

//确定自定义的注解的使用范围 type为类  method为方法  field为属性

@Retention

@Retention()  //(不添加参数默认是class)
@Retention(RetentionPolicy.CLASS)// 保留到源码阶段和编译阶段

@Retention(RetentionPolicy.RUNTIME)// 保留到源码阶段和编译阶段和运行阶段           @Retention(RetentionPolicy.SOURCE)//保留到源码阶段

beans 的 包名含义

 *entity   实例, 数据库中表有什么字段,这里面的类就有什么字段
 * vo:      视图对象,
 * domain  : 数据库表中有的字段,得有,数据库表中没有的字段也可以有
 * pojo  : entity +  domain
 

@Test

不需要main方法 来执行方法

可以直接测试运行方法 

 @SuppressWarnings("这里输入提示信息")//消除编译时出现 过时警告提示

 @Deprecated   //标记过时的方法

    @SuppressWarnings("弹压警告")
    public void getTime(){
//        Date date = new Date();
//        date.getDay();
        sayHi();
    }

    @Deprecated
    public void sayHi(){
        System.out.println("hi");
    }
 
 

 创建自定义一个注解

public @interface dd{}

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Auto {

    int value() default 1;
    String name();
}

@Auto(value = 1,name = "saa")
class Doctor{}

注解中只有一个参数默认名字为value,后接default表默认值,这时@Auto中可直接添加值

除此之外得写 参数名 = xxx

 二、设计模式 23种模式

·设计模式是在大量的实践中总结和理论化之后优选的代码结构,编程模式,解决问题的风格

一、创建型模式  5

单例模式

工厂方法模式

抽象工厂模式

原型模式

建造者模式

二、结构型模式  7

适配器模式

桥接模式

装饰模式

组和模式

外观模式

享元模式

代理模式

三、行为型模式  11

模板方法模式

命令模式

迭代器模式

观察者模式

中介模式

备忘录模式

状态模式

解释器模式

职责链模式

策略模式

三、设计模式的六大原则

1、开闭原则

对扩展开放,对修改关闭

设计文件时(类,接口,方法),不要把文件写死,要考虑文件的拓展性

代码在升级的过程中尽量不要改变和破坏原来的结构和功能,进行扩展

2、里氏代换原则

如果调用的是父类的话,那么换成子类完全可以运行

在传参的时候,尽量写成当前参数的父类,这样可以传所有这个参数的子类,方法更加灵活

3、依赖倒转原则

在开闭原则的基础上

面向接口编程,依赖抽象不依赖具体  指接口和实现类

4、接口隔离原则

一个类如果能实现多个接口。实现多个接口降低耦合

不要把所有方法写在一个接口中,把有相同特点的方法写在一个接口中,方便管理

5、迪米特法则(最少知道原则)

类与类之间减少发生相互作用

对象和对象间减少依赖,使系统功能模块相对独立

6、合成复用原则

在一个新对象中使用已有的对象,(已有对象成为新对象的属性)

新对象通过向这些对象通过委派复用已有功能。注意不是继承。

一个对象作为另一个对象的属性(引用数据类型)

尽量使用合成复用原则,减少继承的使用

四、单例模式

概念

一个类有且仅有一个实例,自行实例化,向整个系统提供

目的

内存中只有一个实例,减少内存开销,尤其是频繁的创建和销毁

避免对资源的多重占用比如文件读写操作

特点

单例模式的类只提供私有构造函数

类中还有一个该类的静态私有对象

提供一个静态的共有的方法用于创建获取它本身的私有静态对象

饿汉式(非延迟加载)

无论对象是否用得到,一定会被创建,类被加载的同时就创建

懒汉式

 五、工厂模式

优点

工厂模式也是用来创建对象的 可以实现一定程度上的松耦合

不需知道对象创建的过程 只要知道调用接口传入的参数即可

概念

定义一个用于创建对象的接口 让殊相类决定将哪一个类实例化

Factory Metod 使用一个类的实例化延迟到其实现类 类

3案例

 工厂独立于需求之外

需求是工厂生产水果 水果可以是苹果 香蕉 橘子

那么可以建立工厂类  水果父类  具体的水果子类

水果又可以是夏天要生产的西瓜,冬天吃的地瓜

最好写成接口,不要写死成具体类

最后案例测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】仿函数和priority_queue(优先级队列)

目录 一、仿函数 二、priority_queue(优先级队列) 1、概念: 2、使用: 3、数组中第K个最大元素 4、priority_queue的模拟实现 一、仿函数 ①、概念: 仿函数,即函数对象。一种行为类似函数的对象,调用者可以像函…

Android studio 快捷键

目录 Ctrl N 搜索指定的 Java 类Ctrl F 查找文本Alt Enter 修复代码错误Ctrl Alt L 格式化代码Ctrl D 复制当前行或选中的内容Ctrl W 逐渐增加当前选中的范围Ctrl Shift - 折叠所有代码Ctrl Shift 展开所有代码Ctrl B 查看定义Ctrl Alt B 查看实现Ctrl Alt O …

Java版的数据结构——栈和队列

目录 1. 栈(Stack) 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.4.1 改变元素的序列 1.4.2 将递归转化为循环 2. 队列(Queue) 2.1 概念 2.2 队列的使用 2.3 队列模拟实现 2.4 循环队列 3. 双端队列&…

IO流(IO Stream)

​ 一、概述 我们已经系统学习了File 类,并且已经知道 File 类的实例用于表示文件或目录的路径 名。 虽然我们可以通过 File 实例来访问文件或目录的元数据,甚至可以创建、删除文件或目 录,但是,我们却不能通过File实例来访问文…

第六章 图 七、最短路径(BFS算法、Dijkstra算法、Floyd算法)

目录 一、BFS算法(单源最短路径) (1)介绍: (2)例子: 二、Dijkstra算法(单源最短路径) (1)介绍: (2&#…

obsstudio下载使用

官网 Open Broadcaster Software | OBS 介绍 OBS是Open Broadcaster Software的简称,是一款开源,用于视频录制以及直播串流的软件,它支持Windows、Mac以及Linux操作系统。OBS使用容易、操作简单,对于新手小白来说非常友好。如果…

集卡拖车运输最新政策调整来了_箱讯科技

国庆佳节马上就要到了,我们即将迎来一个重要的假期。 然而,对于许多进出口企业来说,国庆节并不仅仅意味着放松和庆祝,还需要提前做好出运准备。准时出运对于维护客户信任和业务运营至关重要。 伴随着国庆节的临近,运…

2000-2021年上市公司全要素生产率数据(LP法)(含原始数据、计算代码、计算结果)

2000-2021年上市公司全要素生产率数据(LP法)(含原始数据、计算代码、计算结果) 1、时间:2000-2021年 2、指标:股票代码、年份、证券代码、固定资产净额、营业总收入、营业收入、营业成本、销售费用、管理…

论文阅读之Learning and Generalization of Motor Skills by Learning from Demonstration

0、论文基本信息 DMP经典论文 论文题目:Learning and Generalization of Motor Skills by Learning from Demonstration 会议名称:2009 ICRA 论文作者:Peter Pastor, Heiko Hoffmann, Tamin Asfour and Stefan Schaal 作者简介:…

如何导出数据库数据字典

1、随便找一个工程项目,在项目build.gradle配置文件添加以下依赖 compile group: cn.smallbun.screw, name: screw-core, version: 1.0.52、刷新下载依赖 3、将以下代码拷贝到工程任意Java目录 ScrewDemo.java package com.xxx;import cn.smallbun.screw.core.C…

Manim 中文显示问题报错解决办法

使用Manim直接制作这种动画视频的话是不支持中文的,需要进行一些修改,效果如图所示。 但是修改的方案都太坑,经过自己不断的研究找到了一个比较简单实用的方法。 文章目录 源文件修改代码修改源文件修改 实用everuthing找到ctex_template.tex文件。 我这里的路径是D:\MyT…

定时器+BOM

9.定时器BOM 1.定时器 **概念:**重复执行一个函数 1.1setInterval() setInterval(“代码/函数”,时间,参数),返回定时器的序列号,默认从1开始 clearInterval(序列号)清除定时 <button class"start">开启定时器</button><button class"close…

Elasticsearch:为具有许多 and/or 高频术语的 top-k 查询带来加速

作者&#xff1a;Adrien Grand Disjunctive queries&#xff08;term_1 OR term_2 OR ... OR term_n&#xff09;非常常用&#xff0c;因此在提高查询评估效率方面它们受到了广泛关注。 Apache Lucene 对于评估 disjunctive queries 有两个主要优化&#xff1a;一方面用于详尽评…

Mac os 安装homebrew

Mac os 不会自带homebrew工具&#xff0c;而很多需要的工具需要用brew命令下载和安装&#xff0c;但是因为homebrew是国外网站&#xff0c;如果没有VPN&#xff0c;就无法下载。下面记录一下如何解决这个问题。 1、国内安装的命令如下&#xff1a; /bin/zsh -c "$(curl …

[管理与领导-89]:IT基层管理者 - 扩展技能 - 5 - 职场丛林法则 -3- 在丛林(公司->团队->个人)中定位自己

目录 前言&#xff1a; 一、了解公司市场 1.1 了解公司的途径 1.2 了解一个公司的哪些方面 1.3 商业的本质 1.4 公司的本质 1.5 公司的残酷性 1.6 公司与丛林的相似性 1.7 公司在市场中的定位涉及以下几个方面&#xff1a; 1.8 等价交换与剩余价值 在职场中的体现 二…

input输入事件

我要实现input输入框一边输入&#xff0c;一边在控制台输出结果 现有如下代码 <body><input type"text" onchange"myFunction()" /><script>function myFunction(){console.log(999)}</script> </body> 当敲下回车键后才会…

用python爬豆瓣电影《热烈》短评

一、爬虫对象-豆瓣电影短评 今天分享一期爬虫案例&#xff0c;爬取的目标是&#xff1a;豆瓣上任意一部电影的短评&#xff08;注意&#xff1a;是短评&#xff0c;不是影评&#xff01;&#xff09;&#xff0c;以《热烈》这部电影为例&#xff1a; ▲ 爬取目标 爬取以上6个…

阿里云-源码构建容器镜像

1、阿里云Code代码平台 1.1 创建访问令牌。 登录云效Codeup控制台&#xff0c;单击右上角个人设置。 在个人设置页面&#xff0c;单击左侧导航栏中的个人访问令牌。 单击创建访问令牌&#xff0c;设置配置项&#xff0c;然后单击立即创建。以下为创建访问令牌需要授予的最小权…

【C语言】【strcpy的使用和模拟实现】

1.strcpy的使用&#xff1a; char* strcpy(char* destination,const char* source)返回类型是字符指针&#xff0c;参数是接受方字符串的首地址和要拷贝的字符串的首地址 从接受地的‘\0’开始拷贝&#xff0c;会将源字符串中的’\0’也拷贝过来目标空间必须足够大&#xff0…

PASCAL VOC2012数据集以及制作自己的数据集

目录 VOC2012目录结构制作自己的数据集标注图片软件使用流程软件使用 VOC2012目录结构 制作自己的数据集 标注图片软件 github开源项目&#xff0c;形成的是xml文件格式 使用流程 软件使用