java设计模式

设计模式

什么是设计模式

定义: 是前辈们对代码开发经验的总结,它不是语法规定,而是用来提高代码可复用性,可维护性,可读性,稳健性以及安全性的解决方案
本质:是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解

类和类之间的关系

继承,实现,依赖,关联,聚合,组合

设计模式详解

单例模式:
在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。

懒汉式 : 在调用功能时才创建对象   ->线程不安全|不同步的
饿汉式 : 在类加载完成之后就创建对象->线程安全的|同步的

单例模式有 3 个特点:

1. 单例类只有一个实例对象;
2. 该单例对象必须由单例类自行创建;
3. 单例类对外提供一个访问该单例的全局访问点

单例模式的优点:

单例模式可以保证内存里只有一个实例,减少了内存的开销。
可以避免对资源的多重占用。
单例模式设置全局访问点,可以优化和共享资源的访问。

单例模式的缺点:

单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背
开闭原则。
在并发测试中,单例模式不利于代码调试。在调试过程中,如果单例中的代码没有执行完,也不能
模拟生成一个新的对象。
单例模式的功能代码通常写在一个类中,如果功能设计不合理,则很容易违背单一职责原则。

步骤:

    1.构造器私有化
    2.私有的静态的该类的引用
    3.公共的静态的访问方式

饿汉式:
    线程安全的|同步的
懒汉式:
    线程不安全的|不同步的
    控制线程安全: 方法在添加synchronized关键字进行修改
    synchronized : 被修改的内容多个线程之间排队执行
静态代理
    静态代理
    动态代理

静态代理:
    代理角色与真实角色实现相同的接口
    代理角色持有真实角色的引用
    代理行为

代码:

public class Class003_StaticProxy {
public static void main(String[] args) {
    //项目经理
    Manager manager = new Manager();
    //HR
    HR hr = new HR(manager);
    //代理行为
    hr.addUser();
}
}
//录用人
interface AddUser{
    void addUser();
}

//真实角色 : 项目经理
class Manager implements AddUser{

@Override
public void addUser() {
    System.out.println("面试..录用了");
}
}


//代理角色 : HR
class HR implements AddUser{
    //真实角色的引用
    Manager manager = null;

public HR(Manager manager) {
    this.manager = manager;
}

@Override
public void addUser() {
    System.out.println("发布招聘信息");
    System.out.println("筛选简历");
    System.out.println("预约面试");
    //联系项目经理面试
    manager.addUser();
    System.out.println("谈薪资。。");
}
}
简单工厂模式
抽象产品角色 : 具体产品角色实现的接口|继承的父类
具体产品角色 : 实现类|子类
工厂角色

注意:

    字符串比较是否相等需要使用equals方法进行比较字符串的内容,建议常量放在.的前面,避免空指针异常的出现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值