仅个人纪录学习,可能有错别字 错误的内容等 侵删
图很糊去买书看 支持作者 网上epub转pdf很糊 有时间会用poesson重新画的
1.面向对象的三大特性
(1封装
防止外部访问,造成数据污染,对外暴露接口简单,让使用者不用担心内部实现细节
避免过度封装,使代码难以维护和管理
(2继承
重要的面向对象特性,让父类的方法和属性延伸到子类中,缩减代码量,利于维护,子类可以通过重写来修改继承来的数据和方法实现
(3多态
创建对象是通常有定义一个引用来指向它,方便进行后续操作,父类的引用只能指向本类或者子类实例化的对象,除此之外,还有其他形式的如抽象类引用指向子类对象,接口类引用指向实现类对象。
2.创建类型的设计模式
2.1单例(孤独的太阳
要求
(1 确保对象不能被别人创建:构造方法私有化
private Sun(){}
(2让实例化工作归属内部事务:内部属性自有永永有
private static final Sun sun = new Sun();
static 保持静态性,让再类加载过程中就初始化,与内存堆中实例化,无法被垃圾回收。
final 保证常量 一旦被赋值就不能修改
new 饿汉模式
(3添加程序入口
public static sun getInstance()
方法公开
(4懒汉模式
private static Sun sun;//去掉final
public static sun getInstance(){//需要时再创建
if sun==null
return sun
}
(5多线程考虑
public static synchronized sun getInstance()//加入synchoronrized
(6方法加锁要求太高,由于指令重排等原因,
真正的如下
public class sun{
private volatile static Sun sun;//去看juc
privaye Sun(){}
public stiatic Sun hetInstance(){
if(sun==null){
synchronized(Sun.class){
if(sun==null) {
sun = new Sun();
}
}
}
return sun;
}
}
还有静态内部类 枚举等方式实现单例模式,只有枚举不能被反射破坏单例,其他都能被反射破坏单例
单例本质
<