设计模式笔记

oop 面向对象七大原则

1 开闭原则 :队扩展开发,对修改关闭 #原有功能块出现新需求 不改变原有功能 新增扩展

2 里氏替换原则 :继承必须确保父类锁所拥有的性质在子类中依然成立 #子类可以扩展添加新的功能 ,不改变父类原有功能

3 依赖倒置原则:面向接口编程 不要面向实现编程 #实现依赖接口 接口不应该依赖实现

4 单一职责原则:控制类的粒度大小 将对象解耦 #一个方法只干一件事情

5 接口隔离原则:要为各个类建立他们的专用接口

6 迪米特法则:A→B→C A尽量不要直接与C进行交互

7 合成服用原则:尽量使用组合或聚合等关联关系来实现 其次才是继承

1 单例模式

1饿汉懒汉式

//饿汉式单例
/*
* 可能会浪费空间  该类未使用时就已创建
* */
public class HungryDemo {
    private static final HungryDemo HUNGRY_DEMO = new HungryDemo();//创建对象
    private HungryDemo(){//私有化构造方法

    }

    public static HungryDemo getHungryDemo(){
        return HUNGRY_DEMO;
    }
}
/*
* 懒汉式
*
* */
public class LazyDemo {
    private LazyDemo(){ //私有
        if(lazyDemo!=null){
            throw new RuntimeException("禁止使用反射破坏");
        }
    }
    private volatile static LazyDemo lazyDemo;//volatile 同步

    //双重检测锁机制DCL懒汉   仿制多线程时出现问题
    //双重检测锁会被反射破坏 所以在私有构造方法中还要加一个检测
    public static LazyDemo getLazyDemo(){
        if(lazyDemo==null){
            synchronized (LazyDemo.class){
                if(lazyDemo==null){
                    lazyDemo = new LazyDemo();
                    /*
                    * 1 分配内存空间 2执行构造方法 初始化对象 3 把对象指向这个空间
                    * 为什么加锁 保证多线程的时候可以按照 1 2 3的顺序执行 否则可能会出现分配了内存空间还没有初始化,就把这个对象指向了这个空间
                    * */
                }
            }
        }
        return lazyDemo;
    }

}

饿汉 懒汉 式  枚举

懒汉: 私有构造方法,该类未使用时就创建了对象  提供一个获得对象的方法

#运用场景
1 整个程序运行中只允许有一个类的实例     2 需要频发实例化 然后销毁的对象 
3 创建对象时消耗过多,但是又经常用到 
4 如:网站计数器 数据库连接池等
5 项目中 读取配置文件的类

2 工厂模式

作用:创建者调用者的分离 实例化对象不使用new 用工厂方法代替
简单工厂模式  工厂方法模式  抽象工厂模式

3 抽象工厂

定义:抽象工厂模式 提供了一个创建一些列相关或者互相以来对象的接口 无需指定他们具体的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值