设计模式
文章平均质量分 79
水木今山
什么都没有
展开
-
创建型:建造者模式及相关应用
文章目录建造者(Builder)优缺点应用场景StringBuilder中的应用mybatis中的应用建造者(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象。适用场景:如果一个对象有非常复杂的内部结构(很多属性)想把复杂...原创 2018-10-28 20:05:23 · 174 阅读 · 0 评论 -
行为型:策略模式及相关应用
文章目录策略模式(Strategy)优缺点应用场景参考资料策略模式(Strategy)定义了算法家族,分别封装起来,让它们之间可以互相替代,此模式让算法的辩护权啊不会影响到使用算法的用户。适用场景:系统有很多类,而他们的区别仅仅在于他们的行为不同。一个系统需要动态地在几种算法中选择一种。优缺点优点:符合开闭原则;避免使用多重条件转移语句;提高算法的保密性和安全性。缺点:客户...原创 2018-12-01 15:15:16 · 147 阅读 · 0 评论 -
行为型:模板方法及相关应用
文章目录模板方法(Template Method)优缺点应用场景JDK中的应用Servlet中的应用参考资料模板方法(Template Method)定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。适用场景:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为被提取出来并集中到...原创 2018-12-01 15:14:02 · 177 阅读 · 1 评论 -
结构型:享元模式及相关应用
文章目录享元(Flyweight)优缺点应用场景Integer中的应用参考资料享元(Flyweight)享元模式提供了减少对象数量从而改善应用所需的对象结构的方式。适用场景:常常应用于系统底层的开发,以便解决系统的性能问题。系统有大量相似对象、需要缓冲池的场景。优缺点优点:减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率;减少内存之外的其它资源占用(比如创建对象所...原创 2018-11-19 12:41:43 · 182 阅读 · 0 评论 -
结构型:桥接模式及相关应用
文章目录桥接(Bridge)优缺点应用场景JDBC的应用参考资料桥接(Bridge)将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。通过组合的方式建立两个类之间联系,而不是继承。适用场景:抽象和具体实现之间增加更多的灵活性。一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展。不希望使用继承,或因为多层继承导致系统类的个数剧增。优缺点优...原创 2018-11-19 12:39:39 · 464 阅读 · 0 评论 -
结构型:代理模式及相关应用
文章目录代理(Proxy)优缺点应用场景静态代理动态代理CGLIB代理Spring的代理选择参考资料代理(Proxy)代理模式为其它对象提供一种代理,以控制对这个对象的访问,代理对象在客户端和目标对象之间起到中介的作用。我们有多种不同的方式来实现代理。如果按照代理创建的时期来进行分类的话, 可以分为两种:静态代理、动态代理。静态代理是由程序员创建或特定工具自动生成源代码,再对其编译,在运行...原创 2018-11-19 12:38:28 · 122 阅读 · 0 评论 -
结构型:装饰者模式及相关应用
文章目录装饰者(Decorator)优缺点应用场景Java I/O中的应用Spring中的应用MyBatis中的应用参考资料装饰者(Decorator)在不改变原有对象的基础之上,将功能附加到对象上。提供了比继承更有弹性的替代方案(扩展原有对象功能)。适用场景:扩展一个类的功能或给一个类添加附加职责。动态的给一个对象添加功能,这些功能可以再动态的撤销。优缺点优点:继承的有力补...原创 2018-11-11 22:11:24 · 217 阅读 · 0 评论 -
结构型:外观模式及相关应用
文章目录外观(Facade)优缺点应用场景Spring中的应用SLF4J中的应用参考资料外观(Facade)外观模式又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。适用场景:子系统越来越复杂,增加外观模式提供简单调用接口构建多层系统接口,利用外观对象作为每层的入口,简化层间调用优缺点优点:简化了调用过程,无需了解...原创 2018-11-09 22:10:30 · 327 阅读 · 0 评论 -
创建型:单例模式及相关应用
文章目录单例模式(Singleton)优缺点重点懒汉式实现线程不安全synchronized关键字双重校验锁静态内部类饿汉式实现单例模式存在的问题序列化破坏单例模式反射攻击枚举实现容器实现Runtime中的应用Spring中的应用单例模式(Singleton)保证一个类仅有一个实例,并提供一个全局访问点适用场景:想确保任何情况下都绝对只有一个实例。优缺点优点:在内存里只有一个实例,减少...原创 2018-11-06 20:55:16 · 134 阅读 · 0 评论 -
创建型:简单工厂及相关应用
简单工厂(Simple Factory)简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,而不向客户暴露内部细节。简单工厂不属于23种设计模式,但是之后的工厂方法模式、抽象工厂模式都是由其演化而来,并且在实际场景中也有应用,因此有必要了解。适用场景:工厂类负责创建的对象比较少。优缺点优点:只需要传入一个正确的参数,就可以获取所需要的对象而无须知道其创建细节。缺点:工厂类的职责相...原创 2018-10-24 17:17:58 · 347 阅读 · 1 评论 -
七大设计原则
七大设计原则开闭原则定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。依赖倒置原则定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象。做到针对接口编程,不要针对实现编程。单一职责原则定义:不要存在多于一个导致类变更的原因。一个类/接口/方法只负责一项职责。接口隔离原则定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它...原创 2018-10-24 17:14:12 · 95 阅读 · 0 评论 -
创建型:抽象工厂及相关应用
文章目录抽象工厂(Abstract Factory)优缺点应用场景Connection中的应用抽象工厂(Abstract Factory)抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口。抽象工厂是面向产品族的,而工厂方法是面向产品等级结构的,这是两者的主要区别。适用场景:客户端不依赖于产品类实例如何被创建、实现等细节强调一系列相关的产品对象(属于同一产品族)一起使用创建对象时...原创 2018-10-28 20:09:05 · 130 阅读 · 0 评论 -
创建型:工厂方法及相关应用
文章目录工厂方法(Factory Method)优缺点应用场景Java集合接口Collection中的应用logback中的应用工厂方法(Factory Method)定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。适用场景:创建对象需要大量重复的代码客户端不依赖于产品类示例如何被创建、实现等细节一个类通过其子类来指定创建哪个对象...原创 2018-10-28 20:07:39 · 102 阅读 · 0 评论 -
行为型:观察者模式及相关应用
文章目录观察者模式(Observer)优缺点应用场景参考资料观察者模式(Observer)定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。优缺点优点:观察者和被观察者之间建立一个抽象的耦合;支持广播通信。缺点:观察者之间有过多的细节依赖、提高时间消耗及程序复杂度。应用场景每个网课有一名老师,而...原创 2019-01-21 18:26:46 · 168 阅读 · 0 评论