常用设计模式总结

分类(常见的设计模式)

1.创建型模式

  a) 工厂模式

  b) 抽象工厂模式

  c) 单例模式

  d) 建造者模式

2.结构型模式

  a) 适配器模式

  b) 装饰器模式

  c) 桥接模式

  d) 代理模式

3.行为型模式

  a) 命令模式

  b) 迭代器模式

  c) 策略模式

  d) 观察者模式

六大原则

1、开闭原则

  对扩展开放,对修改关闭。

2、里氏代换原则

  任何基类可以出现的地方,子类一定可以出现。

3、依赖倒转原则

  依赖于抽象而不依赖于具体。

4、接口隔离原则

  使用多个隔离的接口,比使用单个接口要好。

5、迪米特法则,又称最少知道原则

  一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则

  尽量使用合成/聚合的方式,而不是使用继承。

 

一、单例模式

作用

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

特点

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

懒汉式    线程不安全

线程不安全

public class Singleton {  

    private static Singleton instance;  

    private Singleton (){}   

    public static Singleton getInstance() {  

     if (instance == null) {  

         instance = new Singleton();  

    }  

    return instance;  

    }  

}  

线程安全

public class Singleton {  

    private static Singleton instance;  

    private Singleton (){}  

    public static synchronized Singleton getInstance() {  

    if (instance == null) {  

         instance = new Singleton();  

     }  

     return instance;  

    }  

}

双检锁   线程安全

public class Singleton {  

    private static Singleton singleton;  

    private Singleton (){}  

    public static Singleton getSingleton() {  

      if (singleton == null) {  

         synchronized (Singleton.class) {  

         if (singleton == null) {  

             singleton = new Singleton(); 

       }    }     }  

     return singleton;  }  

}  

饿汉式  线程安全


 

二、工厂模式 

作用

一个抽象的接口,多个抽象接口的实现类,一个工厂,用来实例化抽象的接口。

优点

一个调用者想创建一个对象,直接向工厂请求即可,不需要知道具体实现,以提高系统的可维护性、可扩展性。

缺点

产品修改时,工厂也要进行修改。

代码

三、抽象工厂模式

作用

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。

优点

当一个产品类型(每一类中有多个产品)被设计成一起工作时,有良好的维护性。

缺点

产品类扩展困难。

 

 

四、建造者模式

作用

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。

应用实例

肯德基里,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。

角色

  抽象建造者角色:一个抽象接口,以规范产品对象的各个组成成分的建造。

  具体建造者角色:实现抽象建造者Builder所声明的接口,给出一步一步地完成创建产品实例的操作。

  导演者角色:担任这个角色的类调用具体建造者角色以创建产品对象。应当指出的是,导演者角色并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者角色。

  产品角色:产品便是建造中的复杂对象。一般来说,一个系统中会有多于一个的产品类,而且这些产品类并不一定有共同的接口,而完全可以是不相关联的。

 

五、适配器模式

作用

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

模式中的角色

1.目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

2.需要适配的类(Adaptee):需要适配的类或适配者类。

3.适配器(Adapter):实现了目标接口,通过包装一个需要适配的对象,把原接口转换成目标接口。 

通过适配器把需要适配的类转成目标类

优点

  1. 接口可以转成自己希望的另一个接口
  2. 提高了类的复用。

缺点

过多地使用适配器,会让系统非常零乱,不易整体进行把握。

 

六、装饰者模式

作用

对已有的业务逻辑进一步的封装,使其增加额外的功能。即向一个现有的对象添加新的功能,同时又不改变其结构。

优点

可以提供比继承更多的灵活性。

缺点

多层装饰比较复杂。

 

主要参考:https://www.cnblogs.com/wmbg/p/6943878.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值