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

一、注解

@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{}

java 复制代码
@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案例

工厂独立于需求之外

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

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

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

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

最后案例测试

相关推荐
敲代码不忘补水2 分钟前
Python 项目实践:简单的计算器
开发语言·python·json·项目实践
蒟蒻的贤11 分钟前
Web APIs 第二天
开发语言·前端·javascript
ljp_nan18 分钟前
QT --- 初识QT
开发语言·qt
ᅠᅠᅠ@23 分钟前
异常枚举;
开发语言·javascript·ecmascript
编程版小新29 分钟前
C++初阶:STL详解(四)——vector迭代器失效问题
开发语言·c++·迭代器·vector·迭代器失效
陈大爷(有低保)43 分钟前
UDP Socket聊天室(Java)
java·网络协议·udp
c4fx1 小时前
Delphi5利用DLL实现窗体的重用
开发语言·delphi·dll
kinlon.liu1 小时前
零信任安全架构--持续验证
java·安全·安全架构·mfa·持续验证
鸽芷咕1 小时前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
王哲晓1 小时前
Linux通过yum安装Docker
java·linux·docker