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

@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、合成复用原则

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

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

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

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

四、单例模式

概念

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

目的

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

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

特点

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

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

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

饿汉式(非延迟加载)

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

day39 注解 设计模式(单例模式和工厂模式)_第1张图片

懒汉式

day39 注解 设计模式(单例模式和工厂模式)_第2张图片

 五、工厂模式

优点

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

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

概念

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

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

3案例

day39 注解 设计模式(单例模式和工厂模式)_第3张图片

 工厂独立于需求之外

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

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

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

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

最后案例测试

day39 注解 设计模式(单例模式和工厂模式)_第4张图片

你可能感兴趣的:(java,开发语言)