A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

设计模式基础
1、单例模式
单例模式:分为恶汉式和懒汉式

恶汉式:
  public class Singleton {   
     private static Singleton instance = new Singleton();   
     public static Singleton getInstance(){   
       return instance ;   
     }
  }

懒汉式:
  public class Singleton02 {
     private static Singleton02 instance;
     public static Singleton02 getInstance(){
       if (instance == null){
          synchronized (Singleton02.class)
            if (instance == null){
             instance = new Singleton02();
            }     
          }     
       }        
       return instance;  
    }
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2、MVP,MVC,MVVM
  MVP模式,对应着Model–业务逻辑和实体模型,view–对应着activity,负责View的绘制以及与用户交互,Presenter–负责View和Model之间的交互,MVP模式是在MVC模式的基础上,将Model与View彻底分离使得项目的耦合性更低,在Mvc中项目中的activity对应着mvc中的C–Controllor,而项目中的逻辑处理都是在这个C中处理,同时View与Model之间的交互,也是也就是说,mvc中所有的逻辑交互和用户交互,都是放在Controllor中,也就是activity中。View和model是可以直接通信的。而MVP模式则是分离的更加彻底,分工更加明确Model–业务逻辑和实体模型,view–负责与用户交互,Presenter 负责完成View于Model间的交互,MVP和MVC最大的区别是MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的交互由Presenter完成。还有一点就是Presenter与View之间的交互是通过接口的

3、工厂模式 (参考:https://baijiahao.baidu.com/s?id ... r=spider&for=pc)
(1). 简单工厂模式
  简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类(工厂为接口或者抽象类,实例为继承该接口或者抽象类的类)

(2). 工厂方法
  就是讲简单工厂模式当中的基类接口或者抽象类作为工厂的方法的返回值使用,然后由实例继承该工厂类

(3). 抽象工厂
  就是工厂类为抽象类,然后必须要有一个缺省子类来继承该工厂,实现其工厂方法返回一个默认的数据

4、观察者模式(参考:https://blog.csdn.net/chengyuqiang/article/details/79222294https://blog.csdn.net/acevd/article/details/81938897
  观察者模式又称为发布/订阅(Publish/Subscribe)模式
  观察者设计模式涉及到两种角色:主题(Subject)和观察者(Observer)
  Java中观察者模式需要被观察者继承java.util.Observable类,需要观察者实现java.util.Observer接口。其中Observer接口中有一个update方法,它在被观察者的某些位置发生改变时会被自动调用。

5、建造者模式(builder,参考:https://www.jianshu.com/p/3d1c9ffb0a28
  创建者模式又叫建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。

6、装饰器模式(参考:https://www.cnblogs.com/jzb-blog/p/6717349.html
  装饰器模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下:


  Component为统一接口,也是装饰类和被装饰类的基本类型。
  ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。
  Decorator是装饰类,实现了Component接口的同时还在内部维护了一个ConcreteComponent的实例,并可以通过构造函数初始化。而Decorator本身,通常采用默认实现,他的存在仅仅是一个声明:我要生产出一些用于装饰的子类了。而其子类才是赋有具体装饰效果的装饰产品类。
  ConcreteDecorator是具体的装饰产品类,每一种装饰产品都具有特定的装饰效果。可以通过构造器声明装饰哪种类型的ConcreteComponent,从而对其进行装饰。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马