标签:code 经理 训练营 Object 观察者 模式 极客 单例 代码
张面向对象编程理念与核心设计思想
多态性、封装性、内聚、耦合
1.多态:把不同种类的东西当做相同的东西来处理 >
(举个例子:三个箱子,而多态的本质是什么:都是箱子,都可以打开箱子,但是打开箱子的具体动作不同(方法)
2.多态的优点:将各种数据统一的处理,根据对象的不同来选择最合适的方法
继承
1.并不是说面向对象一定有继承,比如javascript(但是非常重要的)
2.多重继承(Python、C++)
3.多重继承的缺点
4.Java 中的继承:extends 单继承 + implements 接口
知道哪些设计模式
1.工厂模式 (Spring 中的依赖注入中的 IoC 容器,BeanFactory 与 ApplicationContext)
2.单例模式 (Spring 中的 Bean 的生命周期 singleton 不同于我们设计模式中的单例模式,前者是容器内单例,而后者是类加载器中单例)
3.策略模式 (SQL 在线审核系统中执行 SQL 语句时,导师提了一个需求,SQL 具体执行的模块单独分离出来,而且可以更换不同的执行策略)
接口 A 定义策略
B、C 类实现该策略
Context 组合模式 组合接口 A
4.模板模式 (Template,典型的是 Spring 中 JDBCTemplate 类,对 JDBC 进行封装)
JDBCTemplate 中已经封装好 JDBC 的执行顺序,而具体执行的内容 (更新、查询)则交给子类去做
小技巧:使用 Callback 回调函数形式可以避免再创建子类
5.适配器模式(Tomcat 中的适配器CoyoAdapter: 在 Nio)
6.外观模式(Tomcat 中的外观模式,RequestFacade)
7.观察者模式 (Tomcat 容器启动的过程)
抽象主题 (Subject)- 具体主题 : 注册、删除、唤醒观察者
抽象观察者 (Observer)- 具体观察者
Tomcat 中容器启动过程中
谁是观察者 (抽象观察者,LifecycleListener)
具体观察者:ServerLifecycleListener
抽象 Subject:Lifecycle
具体 Subject: StandardServer
8.装饰者模式 (JavaIO 与装饰者)
9.状态模式
10.代理模式
11.责任链模式
12.原型模式
13.迭代器模式
14组合模式
反模式
1.过早优化(在 Effective Java、Java 并发编程模型中都多次提到过过早优化的种种缺点)
代码的性能瓶颈寻找问题(还没完成代码之前,如何谈性能)
对代码优化可能会提升代码的复杂度,提高 Bug 率
2.不要讲大量时间花费在琐碎的问题上
3.魔法数与字符串(而不是用一个变量去定义,在阿里巴巴编程规范中也有强烈指出该问题)
4.避免那些无用的类(没有意义的类)
5.不要用代码的行数来衡量项目的进度 (代码行数 - 进度; 重量 - 飞机进度)
6.避免重新造轮子
7.类的数量多,并不代表代码更复杂
常用重构的技巧
1.重复代码提炼 (AOP)
2.冗长方法的分割
3.嵌套条件
思想:将不满足的条件放在前面,并及时跳出方法
class BadExample {
public void someMethod(Object A,Object B){
if (A != null) {
if (B != null) {
//code[1]
}else {
//code[3]
}
}else {
//code[2]
}
}
}
/* --------------------- 分割线 ---------------------- */
class GoodExample {
public void someMethod(Object A,Object B){
if (A == null) {
//code[2]
return;
}
if (B == null) {
//code[3]
return;
}
//code[1]
}
}
分支的合并
标签:code,经理,训练营,Object,观察者,模式,极客,单例,代码 来源: https://blog.csdn.net/lsttwo/article/details/112531761
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。