关于面向对象的讨论

一.山寨一个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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值