zoukankan      html  css  js  c++  java
  • 设计模式的简单理解

    网上很多关于设计模式的解析,并不是很好理解,所以这里罗列一下我的简单理解,希望大家指正!  

      1.工厂模式:指不向外部提供具体的创建对象的方法,只要传入一个名字参数就可以获取对象,比如Spring的Bean工厂,User user = beanFactory.getBean("user"):

      2.抽象工厂模式:指创建工厂的工厂,前面提到的bean工厂,相当于是它的子工厂,还有一个更大的工厂在创建这些工厂,获取的时候也是只要传入一个名称,

      这里命名一个工厂创建者FactoryProducer,BeanFactory beanFactory = FactoryProducer.getFactory("beanFactory");

      3.单例模式:创建一个类,这个类只能有一个实例,而且必须自己创建自己的唯一实例(构造方法私有化,内部进行 new),必须给所有其他对象提供这一实例(public static xxx getInstance(){})。

      4.建造者模式:使用多个简单的对象一步一步构建成一个复杂的对象。

      5.策略模式:选择交通出行方式,选择骑自行车、坐汽车,每一种出行方式都是一个策略,而这些策略都当做是对象,出行这个行为也是一个对象,出行对象 可以自由选择不同的出行方式对象。

      6.观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,降低耦合。

      这就相当于发布订阅的模式,让多个观察者对象同时监听或者订阅同一个主题对象,这个主题对象在状态发生变化时,会以广播的形式通知所有观察者对象,使它们能够自动更新自己。

      7.代理模式:为其他对象提供一种代理以控制对这个对象的访问。有时候直接访问某个复杂对象时,创建时就会消耗大量性能,这时候通过代理对象,在访问这个对象的时候做一些控制,减轻复杂过程。

      如果有了解微服务的服务调用,那对整个代理就不陌生了,调用方通过代理对象来调用远程服务,不关注底层的通信协议。

      8.装饰模式: 允许向一个现有的对象添加新的功能,同时又不改变其结构。比如一个毛坯房,装修时粉墙、铺地砖、置办家具,但是不改变房体结构,添加了厨房、卫生间、卧室的功能。

      这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

      9.迭代器模式:java中经常使用的Iterator类,但同时它也是一个设计模式,所以在我们实现迭代器模式的时候实际上就是在实现一个迭代器类。

      10.适配器模式:将一个类的接口转换成客户希望的另外一个接口。保留现有类所提供的服务,向客户提供接口,以满足客户的期望。

      比如:一个蓝球队,教练通过一个交流接口和所有的球员进行交流,突然来了一个外援(教练不会外语),那现在既要保留原有的交流,又要能够和外国人交流,这时候就出现一个翻译(适配器角色),满足了需求。

  • 相关阅读:
    将WinServers2019打造成家用系统
    WindowsServers2019上手体验
    【代码模板】不存在的NOIP2017
    NOIP2018初赛翻车总结
    【初赛】各种排序算法总结
    【Luogu1996】约瑟夫问题(模拟,解法汇总)
    【初赛】NOIP2018程序模板
    MongoDB
    非关系型数据库----MongoDB
    用Python来操作redis 以及在Django中使用redis
  • 原文地址:https://www.cnblogs.com/Luke-Me/p/8963175.html
Copyright © 2011-2022 走看看