设计模式
南丘xf
好记性不如烂笔头——1枚昆明程序猿
展开
-
常见的设计模式有哪些?实际开发中你用了什么设计模式?
对于设计模式,相信大多数人都有了解,或为了面试,或为了实际开发,但是对于大多数人来说,实际开发中,真正用设计模式的地方,少之又少。最主要的原因,还是因为我们对设计模式并未真正的理解。那么,如何理解设计模式呢?设计模式就是那些大佬经验设计的总结(情境中遇到问题而经过证实的一个解决方案)。针对某些特定的场景,去使用特定的设计模式,能让代码更简洁,也可重用代码、让代码更容易被他人理解、保证代码可靠性...原创 2020-03-06 23:35:37 · 8950 阅读 · 1 评论 -
什么是委派模式(Delegate)?应用场景是什么?
委派模式(Delegate),单从字面理解,就是项目经理叫程序猿去干活,这个就是委派模式,委派模式是这么定义的:类B和类A是两个互相没有任何关系的类,但是B具有和A一模一样的方法和属性;并且调用B中的方法/属性就是调用A中同名的方法和属性。B好像就是一个受A授权委托的中介,第三方的代码不需要知道A的存在,也不需要和A发生直接的联系,通过B就可以直接使用A的功能,这样既能够使用到A的各种公能,又能够...原创 2018-08-31 14:29:00 · 2171 阅读 · 2 评论 -
什么是策略模式(Stategy)?应用场景是什么?
Stategy策略模式:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。策略模式使得算法可以在不影响到客户端的情况下发生变化,它也被成为政策模式,是一种行为型模式。(项目经理委派程序猿干活时,需要权衡,这个权衡的过程就可以理解为策略模式!)策略模式的结构:策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。...原创 2018-08-31 15:12:00 · 2078 阅读 · 0 评论 -
什么是模板模式(Template)?应用场景是什么?
Template模板模式:一个抽象类公开定义了执行它的方法的方式/模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。通俗来说,可以这样理解: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。比如:完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事...原创 2018-09-03 08:57:00 · 1612 阅读 · 0 评论 -
什么是原型模式(Prototype)?应用场景是什么?
Prototype原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于对象创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。● P...原创 2018-08-31 16:50:00 · 4382 阅读 · 0 评论 -
什么是单例模式(Singleton)?应用场景是什么?
Singleton单例模式根据产生时机不同,可分为如下三类:(1)懒汉式(2)饿汉式(3)登记式在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式。适用场景:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。通过单例模式,自行实例化并向这个系统提供这个单一实例的访问方法,看以下代码:/** 懒汉式——其特点是延迟加载,即当需要用到此单一实例的时候,才去初始化此...原创 2018-08-31 09:23:00 · 1010 阅读 · 0 评论 -
什么是工厂模式(Factory)?应用场景是什么?
针对Java设计模式,推荐一书《大话设计模式》:链接: https://pan.baidu.com/s/16YZ8nMx6M2C94_dmMWjh0w 提取码: aw5y1、Factory工厂模式分为:1)简单工厂模式(Simple Factory) --- 普通工厂模式2)工厂方法模式(Factory Method) --- 多工厂模式3)抽象工厂模式(Abstract Facto...原创 2018-08-30 16:24:00 · 2597 阅读 · 0 评论 -
什么是代理模式(Proxy)?应用场景是什么?
比方说有这样一个歌手Sunzi,他只会唱歌(方法叫sing()),但是在唱歌之前,需要先向观众问好呀,唱完以后,还需要向观众致谢啊对不对?可是Sunzi不会啊,怎么办呢?这就需要找个人代理呀,比如Xiaozi:public class Sunzi{ public void sing() { System.out.println("我是Sunzi,我只唱歌!"); ...原创 2018-08-30 15:03:00 · 1671 阅读 · 0 评论