设计模式介绍

简介: 设计模式介绍

设计模式的分类

>>创建型模式

简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

>>结构型模式

代理模式、适配器模式、装饰器模式、外观模式、桥接模式、享元模式

>>行为型模式

观察者模式、责任链模式、模板方法模式、策略模式、迭代子模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式


模式介绍

1.简单工厂模式

定义一个创建不同对象的工厂类,在类方法里根据参数创建出不同的对象。简单好用但是如果要扩展必须改工厂类方法代码。

2.工厂方法模式

定义一个创建对象的父类,在父类里定义一个创建对象的抽象方法。通过在子类中实现抽象方法的方式可以创造出不同的对象。好处是扩展新类型对象时不用改动父类,只用新建一个子类实现抽象方法就行了。问题是创建不同的对象要知道不同的子类,为了解决这个问题又有了抽象工厂模式

3.抽象工厂模式

定义一个接口用于创建相关或者有依赖关系的对象族,而无需指定具体类。抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。

优点

1.分离了具体的类。客户通过抽象接口操纵实例,产品的类名也在具体工厂的实现中被分离,它们不出现在客户代码中。

2.易于交换产品系列。一个具体工厂类只在初始化时出现一次,这使得改变一个应用的具体工厂变得很容易,只需改变具体的工厂即可使用不同的产品配置。

3.有利于产品的一致性。当一个系列的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象,这一点很重要,而抽象工厂很容易实现这一点。

缺点

难以支持新种类的产品。因为抽象工厂接口确定了可以被创建的产品集合,所以难以扩展抽象工厂以生产新种类的产品。

三种模式的使用选择

简单工厂:用来生产同一等级结构中的任意产品,但不支持扩展增加产品。

工厂方法:用来生产同一等级结构中的固定产品,支持扩展产品。

抽象工厂:用来生产不同产品族的全部产品,支持产品扩展,支持产品族扩展。

4.单例模式

确保一个类全局只有一个实例并提供一个访问点。单例模式分为预加载和懒加载模式。

预加载:一般用static的形式在类没有使用的时候已经完成初始化对线程安全但是如果没有被用到会造成内存浪费。

懒加载:为了避免内存浪费使用懒加载模式在用到单例对象的时候再创建,因为创建对象不是原子操作所以不是线程安全的,可以通过synchronized进行同步操作保证原子性。

public class Singleton {
       private static volatile Singleton instance = null;
       private Singleton() {
       };
       public static synchronized Singleton getInstance() {
              if (instance == null) {
                     synchronized (instance) {
                           if (instance == null) {
                                  instance = new Singleton();
                           }
                     }
              }
              return instance;
       }
}


相关文章
|
4月前
|
设计模式 算法 前端开发
设计模式-委托模式
设计模式-委托模式
36 1
|
9月前
|
设计模式
设计模式
设计模式是指在软件设计中,经过总结和提炼出来的、被广泛认可的、可重用的解决特定问题的设计思路和方法。设计模式可以帮助软件设计师更好地解决一些常见的设计问题,提高代码的可维护性、可扩展性和可重用性。
55 1
|
4月前
|
设计模式 消息中间件 Kubernetes
设计模式总结(二)
设计模式总结(二)
|
9月前
|
设计模式 关系型数据库
设计模式介绍
设计模式介绍
|
10月前
|
设计模式
职责链设计模式解读
职责链设计模式解读
|
11月前
|
设计模式 算法 Java
设计模式总结
设计模式总结
59 0
|
12月前
|
设计模式 消息中间件 Java
一起来学设计模式之认识设计模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式基本概念,它的基本原则以及有哪些设计模式~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 设计模式初识 设计模式是一种经过验证的、被广泛应用的解决特定问题的软件设计方案,它提供了一种在软件设计中反复使用的解决方案。设计模式通常描述了一个问题的情境、解决方案和解决方案的优点和缺点。设计模式不是一种具体的编程语言特性或库,而是一种通用的设计思想和方法。
|
设计模式 算法 安全
11种常用的设计模式
有这么一个很形象的比喻,把写代码比作是建房子,代码比作是砖瓦、一个完整的系统就好比是一栋高楼大厦、程序员无疑就好比是建(ban)筑(zhuan)工,这些很表面的东西我们都可以很形象深刻的理解,其实要设计和开发一个系统远远不只这些东西,深挖表象之下隐藏着的细节往往才是灵魂所在,诸如:算法和数据结构、框架、设计模式等,设计模式是一个虚幻的抽象的概念,好比建造房子时的设计理念方案一样,一个软件系统扩展性、可维护性以及稳定健壮性如何,很大程度上取决于设计模式。
11种常用的设计模式
|
设计模式 Arthas Java
设计模式(四)
设计模式
179 0
|
设计模式
设计模式之其他设计模式(7-1)
设计模式之其他设计模式(7-1)
103 0