一.山寨一个MySystem.myOut.myPrintln("haha");
二.多态的好处?
三.
Father obj=new Son();
obj.方法();
obj能调出哪些方法名看父类还是子类?执行过程呢?
四.单例模式有哪些实现?
五.什么是模板模式?
五.模板模式
模板类实现骨架逻辑 分步逻辑交给子类实现 并接受模板类的总调用
public abstract class MyOpr {
//骨架逻辑
public void doSomeThing() {
if (cond_a) {
//细分逻辑
kuRouJi();
//细分逻辑
meiRenJi();
}else if(cond_b) {
//细分逻辑
kongChenJi();
}
}
public abstract void kongChenJi();
public abstract void kuRouJi();
public abstract void meiRenJi();
main:
MyOpr opr=new MyOprImplA();
opr.doSomeThing();
四.单例模式
1.饿汉
-没有调用getInstance()之前 实例已存在
-天然的线程安全[ 安全性由jdk的static保证 ]
public class Manager {
private Manager() {
//
}
private static Manager instance = new Manager();
public static Manager getInstance() {
return instance;
}
//
}
2.懒汉
-一定要调用getInstance()时 实例才会创建
-线程安全的懒汉分为 双检锁式 和 静态内部类式
public class Manager {
private Manager() {
//
}
private static volatile Manager instance;//双检锁时 此变量必须有内存可见性
public static Manager getInstance() {
// 不加锁粗判
if (instance == null) {
// 加锁细判
synchronized (Manager.class) {
if (instance == null)
instance = new Manager();
}
}
return instance;
}
//
}
二.多态的好处
1.便于更换实现类
-体现了开闭原则
(对新增开放/对修改关闭)
(提倡新增实现类/而不是修改旧的实现类逻辑)
2.一般与工厂配合使用
-接口 obj=factory.getBean();