设计模式
梦想的转角
这个作者很懒,什么都没留下…
展开
-
Adapter(适配器)模式
适配器模式有两种:委托和继承,在我看来,继承其实也可以理解为委托,相当于委托自己的父类在适配器模式中,被适配者和适配器耦合性非常强列子:我们这标准电压都是220v,但大部分电器的使用电压都比220小的多。220就是现有的,我们需要的则是其它大小的电压意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,...原创 2018-03-12 21:00:04 · 535 阅读 · 0 评论 -
工厂模式——简单,工厂,抽象
简单工厂模式:(参考https://www.jianshu.com/p/a9f397c4ff98)定义:提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以使接口、抽象类,也可以是具体的类。简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例说...原创 2018-03-19 21:11:20 · 153 阅读 · 0 评论 -
桥接模式(Bridge)
定义:桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。说明:将类的功能层次结构与实现层次结构分离类的功能层次与类的实现层次结构:类的功能层次结构:简单的说就是继承父类,增加父类没有的功能类的实现层次结构:简单的就是继承结构或者是抽象的父类,实现定义好的方法类图:代码:https...原创 2018-03-29 19:28:22 · 180 阅读 · 0 评论 -
单例模式
参考http://cantellow.iteye.com/blog/838473;公众号:程序员小灰懒汉式线程不安全:这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。需要的时候才会实例化线程安全:对比上一中,就多个Synchronized关键字,这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要...原创 2018-03-20 21:09:53 · 125 阅读 · 0 评论 -
构建者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。组装复杂的实例情景:假设构造函数中有很多参数,有些是必须有的,有些是非必须的,这样如果实例化起来就非常麻烦,并且时间久了也容易忘记参数的含义,因为有些参数的类型很有可能是一样的实例化:通常都是new出个实例但如果很多,参数类型都相同,这样就很麻烦了javaBean:这种模式弥补了重叠构造器模式的不足。创建实例很容易,这...原创 2018-03-30 18:42:22 · 855 阅读 · 0 评论 -
策略模式(Strategy)
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,使得算法可以在不影响到客户端的情况下发生变化。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为如何解决:将这些算法封装成一个一个的类,任意地替换。...原创 2018-04-08 20:35:05 · 153 阅读 · 0 评论 -
原型模式
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象说明:通过clone方法来拷贝原对象,值的注意的是,拷贝后的对象与原对象并不是同一个对象,这个可以通过equal方法来验证,这点也可以说是与享元模式的区别吧,在生活中,细胞分裂这个可以说是原型模式的一种具体表现吧,或者复印的卷子等等,clone也分为浅拷贝和深拷贝,kotlin中的Any类中是没有clone方法的,所以这例子都是用...原创 2018-03-26 21:10:00 · 136 阅读 · 0 评论