设计模式
K_Crazy_Young
菜鸟一枚
展开
-
设计模式 - 观察者模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。优点:1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。缺点:1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都...原创 2019-07-01 14:33:14 · 204 阅读 · 0 评论 -
设计模式 - 代理模式
目录一、官方话二、自己概括三、实现四、代码一、官方话我们创建具有现有对象的对象,以便向外界提供功能接口。为其他对象提供一种代理以控制对这个对象的访问。优点:1、职责清晰。 2、高扩展性。 3、智能化。缺点:1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂...原创 2019-07-01 10:19:35 · 233 阅读 · 0 评论 -
设计模式 - 装饰器模式
目录一、官方话二、自己概括三、实现四、代码一、官方话这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。缺点:多层装饰比较复杂。二、自己概括新写一个接口或者抽象类去囊括原有的接口并且新增功能,然...原创 2019-06-28 15:52:57 · 116 阅读 · 0 评论 -
设计模式 - 适配器模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。优点:1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。缺点:1、过多...原创 2019-06-28 13:25:11 · 220 阅读 · 0 评论 -
设计模式 - 原型模式
目录一、官方话二、自己概括三、实现四、代码五、使用场景一、官方话这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。优点:1、性能提高。 2、逃避构造函数的约束。缺点...原创 2019-06-28 11:19:30 · 138 阅读 · 0 评论 -
设计模式 - 建造者模式
目录一、官方话二、自己概括三、实现四、代码一、官方话建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象,一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。优点:1、建造者独立,易扩展。 2、便于控制细节风险。缺点:1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建...原创 2019-06-28 10:10:48 · 160 阅读 · 0 评论 -
设计模式 - 模板模式
目录一、官方话二、自己概括三、实现四、代码五、注意事项一、官方话一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。优点:1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。使...原创 2019-07-02 15:27:11 · 280 阅读 · 0 评论 -
设计模式 - 单例模式
目录一、官方话二、自己概括三、代码四、几种单例模式的实现五、补充一、官方话这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。优点:1、在内存...原创 2019-06-26 15:53:57 · 187 阅读 · 0 评论 -
设计模式 - 抽象工厂模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。缺点:产品族扩展非常困难,...原创 2019-06-26 14:54:40 · 221 阅读 · 0 评论 -
设计模式 - 工厂模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行优点:1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。缺点:每次增加一个产品时,都需要增加...原创 2019-06-26 14:16:49 · 134 阅读 · 0 评论 -
设计模式 - 策略模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。优点:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点:1、策略类会增多。 2、所...原创 2019-07-01 15:31:38 · 214 阅读 · 0 评论 -
设计模式 - 责任链模式
目录一、官方话二、自己概括三、实现四、代码一、官方话避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。优点:1、降低耦合度。它将请求的发送者和接收者解耦。 2、简化...原创 2019-07-01 11:27:47 · 164 阅读 · 0 评论