Welcome to zzrdark's blog
这里是我的个人IT学习小天地
-
设计模式
- 设计模式就是经验之谈,供后人借鉴,解决一些具有代表性的问题。
- 设计模式来源于生活,反过来帮助我们更好的生活。
- 设计模式提升代码的可读性、可扩展性、复杂的业务问题
- 千万不要死记硬背,每个设计模式结合实际生活、穷举法。
-
单例模式
- 应用场景:保证一个类仅有一个实例,并提供一个访问它的全局访问点、还需要考虑现场安全问题
- 饿汉式、懒汉式、注册登记式、枚举式、序列化与反序列化会出现多例
- Spring 中的单例模式完成了后半句话,即提供了全局的访问点BeanFactory
- 但没有从构造器级别去控制单例,这是因为Spring 管理的是是任意的Java 对象
- Spring 下默认的Bean 均为单例
-
个人感悟:
- 设计模式都是处理复杂问题的,如果问题本身很简单,使用设计模式反而累赘,增加了开发的复杂性。
- 遇到最简单的情况,直接new
- 如果创建对象过程简单,但是需要匹配不同的情况,返回不同对象时,考虑使用简单工厂。
- 如果遇到对象创建过程复杂(比如数据库连接这样的复杂对象,不仅仅牵涉到new 一个对象这么简单),这样需要把创建过程抽象出来,统一编写,对外提供干净的接口调取即可:考虑使用工厂模式;
- 如果遇到对象创建过程复杂、而且多对象匹配问题(比如默认去缓存库redis取,如果缓存库娶不到,去oracle数据库取),在上一条我们已经把redis、oracle的创建做成了工厂,此时需要对二者统一再抽象一层:考虑使用抽象工厂
简单工厂模式:
- 做静态工厂方法(StaticFactory Method)模式,但不属于23 种设计模式之一
- 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
- Spring 中的BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean 对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定
-
原型模式(Prototype)
- 应用场景:原型模式就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。
- 所谓的原型模式:就是java中的克隆技术,以某个对象为原型,复制出的新对象。
- 显然新的对象具备原型对象的特点,效率高(避免了重新执行的构造过程步骤