
设计模式
星空之下仰望神
喜欢思考。适合成为哲学家的未来程序员
展开
-
原型模式
原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.理解在你新创建一个实例时需要消耗较多的资源,并且希望保存已经存在的实例的状态,这时可使用原型模式.被复制的原型类需要实现拷贝构造函数,常常和工厂模式搭配使用.和单例模式相冲突.优点可以不再进行重复的操作以保证新的实例与已经存在的实例有相同的状态.缺点逃脱了构造函数的限制,这使得即使构造函...原创 2020-03-26 17:03:08 · 181 阅读 · 0 评论 -
享元模式
享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象.优点大大减少对象的创建,避免了大量重复的对象的出现,减轻系统的内存负担,使效率提高.缺点需要考虑外部状态和内部状态的划分,否则将使得线程不安全.理解这里将会用到"池"的概念,创建对象之前将会搜索池,如果不存在可用对象,则会创建新对象并将其加入"池",否则将会使用已经存在的对象,此时新的对象事实上可以看成已经存在...原创 2020-03-25 13:23:19 · 156 阅读 · 0 评论 -
观察者模式
观察者模式(Observer)当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.理解如同在动物园看动物,当动物的行为、状态发生改变时,所有的游客(观察者)都自动收到信息.常用于通知类型的设计.优点观察者和被观察者是抽象耦合的,依赖关系被弱化.缺点在规模庞大时,让所有观察者接收到更新通知将会花费很长的时间.实现在用户使用软件,软件公司发布了软件的一个新版本,...原创 2020-03-24 20:08:15 · 145 阅读 · 0 评论 -
工厂模式
工厂模式(Factory)定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行.优点只要知道名称就可创建对象,可拓展性好.缺点在实现类并不复杂时,使用该模式会造成代码冗余.抽象类图理解实例化这个操作,不应该公开的进行,用new直接创建的方式就是针对实现编程,违背了设计模式原则中的依赖倒转原则.并且很多时候,创建一个类所做的初始化工作不...原创 2020-02-20 15:31:10 · 131 阅读 · 0 评论 -
策略模式
策略模式(Strategy)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.理解这里策略与我们平时的意思一致,即可以实现目标的方案集合,在众多方法中选择一种使用.常用于替代if-else,但并非所有情况下都可替代.优点可拓展性良好.策略(Strategy)在运行时装载代码,从而解决了有时候支持不使用的方法也是一种性能负担的问题.缺点策略类都需要将方法置为public...原创 2020-01-16 17:07:50 · 145 阅读 · 0 评论 -
模板模式
模板模式(Template)定义一个操作中的算法的骨架,并将一些步骤延迟到子类中,这使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.理解如同我们日常生活中"模板"的意思,做一个标准化的流程,其中一些地方留空,后来者可以根据自己的需要填空.就像试卷,答题的格式已经固定了,你所要做的就是在其中挖空的地方填空,并且每个人填的内容可能都会不一样.优点不变部分被封装,使得可变部...原创 2020-01-16 16:46:02 · 166 阅读 · 0 评论