首页 > 其他分享 >设计模式小结

设计模式小结

时间:2023-04-27 14:32:03浏览次数:44  
标签:里面 对象 小结 模式 基类 设计模式 方法


简单工厂模式


  • 将具有相同属性事物用一个抽象基类,里面具有抽象方法来作为父类,然后其他子类通过继承来实现这个基类,通过重写实现基类里面的抽象方法
  • 创建一个工厂方法,通过父类变量来

策略模式

  • 就是在简单工厂模式的基础上,将工厂方法改成策略对象,然后去调用该对象的重写基类的抽象方法

单一职责原则

  • 一个类里面通过一个功能来划分一个方法,而不是通过变量来判断一个方法里面选择哪个功能

开放-封闭原则(OCP)

  • 对于扩展是开放的,对于修改是封闭的
  • 对于需要频繁修改的功能,可以将其写成接口,然后功能类就继承自这个接口

依赖倒转

  • 对象Car,引擎对象AutoSystem,
  • 高层模块不应该依赖底层模块,都应该依赖抽象对象,如果依赖底层则底层修改,高层也要变动,增加了开发成本,如果依赖抽象底层或者高层变动都不会互相影响。
  • 错误案例:一个类(Car)里面有功能方法,AutoSystem类是接受某个Car的对象,然后各种方法都是通过判断是哪种对象来实现各自对象的方法
  • 正确修改:将各种相同需求的方法添加在一个接口里面ICar,AutoSystem类接受一个ICar的对象,然后调用对应的Car的功能方法,各种Car继承对应接口就行
  • 通过接口降低耦合度

装饰模式

  • 大话设计模式第六章
  • 对象Person里面有虚方法Show,通用服饰类Finery继承自Person里面有接受Person对象的方法和重写的Show方法,具体的服饰TShirts继承自通用服饰类重写Show方法要调用基类的方法 base.Show()

代理模式

  • 将动作方法放在一个接口里
  • 被代理的对象类继承自这个接口,代理对象初始化一个被代理的对象,然后调用被代理对象的方法

工厂模式

  • 将工厂方法放在一个接口里,然后各种具体的功能继承自这个接口返回一个方法对象,参照设计模式第八章
  • 简单工厂是工厂类包含了必要的逻辑判断,根据客户端选择条件动态创建操作对象,工厂方法是用于创建对象的接口让子类去选择实例化哪一个类,是将实例化延迟到了子类

原型模式

  • 通用对象Key钥匙是一个抽来类,里面有一个抽象方法Clone,具体宿舍钥匙或者是自行车钥匙类都是继承自这个抽象类Key,重写Clone方法返回自己当前的实例对象,自己的构造函数可以通过Base的构造函数来初始化完成

模板方法模式

  • http://blog.jobbole.com/78088/
  • 抽象对象烹饪里面包含倒油,翻炒等方法,还包含倒菜的抽象方法,具体的素菜类继承自烹饪类重写倒入素菜的方法
  • 模板方法是将不变的行为搬到基类,子类重写变动的虚方法

迪米特法则

  • 基类抽象类Person对象,里面有抽象方法操作方法,具体的庞庆龙类继承基类Person实现重写操作方法,禀报方法,太监类里面有一个传达方法专门初始化陌生人对象然后调用该对象的Operation方法,慈禧太后类里面有一个专属的太监对象,调用太监类对象的传达方法
  • 迪米特法则就是避免两者直接对话而是通过第三方转达的方式

外观模式

  • 外观模式就是个各类里面都有自己特有的方法,然后我想要根据特定的情况来调用各个对象的各个方法的组合
  • 可以参考大话设计模式的12章

建造者模式

  • 参考大话设计模式第13张
  • 抽象类PersonBuilder里面有制造各个部件的抽象方法,构造方法是传入可变参数例如颜色,画笔粗细等,然后构建瘦弱的人类继承自PersonBuilder重写构建各个部位的胖瘦参数,构造函数也是传入颜色,画笔调用基类的构造函数,PersonDirector类构造函数是传入PersonBuilder对象然后调用基类对象的抽象方法,在传入的时候实际上传入的是继承自基类的子类对象,然后创造方法其实是调用的子类重写的方法

观察者模式

  • 其实就是事件委托的一种典型应用,也是用的比较多的一种常见设计模式

抽象工程模式

  • 大话设计模式第15章
  • 将数据库操作Insert和Get方法放在接口里,SqlServer和Access的操作类继承自接口然后实现里面的方法,定义一个工厂接口里面有创建数据库操作的接口实现,返回的是一个数据库操作接口,SQL数据库工厂继承自IFactory实现里面的创建方法,AccessFactory同样,客户端用各个数据库的工厂来实例化IFactory对象然后调用里面的创建方法来实例化数据库操作接口,然后调用里面的Insert和Get方法。
  • 企业开发数据库切换库就是使用的这种设计模式来实现不同数据库的快速切换
  • 简单工厂来改变抽象工厂可以在创建数据库操作对象这个方法里面判断是什么类型的DB然后创建对应的数据库操作对象
  • 进化:可以通过反射+抽象工厂来实现访问数据库,或者在将数据库配置信息写在配置文件里通过反射来访问对应的数据库

状态模式

  • 大话设计模式第16章
  • 案例:根据时间来判断做什么事情,一般就是方法里面写很长的if判断
  • 改进:创建一个抽象类State里面有Handle抽象方法参数是Context上下文,状态A类继承自State实现里面的Handle方法,状态B同样,Context类构造函数接受一个State然后里面有一个Request响应方法,调用的是state对象的Handle处理方法。状态模式通过各种状态逻辑转移分部到State的子类之间,来减少相互依赖

适配器模式

  • 解决问题:Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
  • 定义客户端所期待的类里面有一个虚方法,然后定义适配器继承自这个接口重写里面的实现方法,客户端通过创建这个子类的对象来初始化基类对象来调用子类的重写方法

备忘录模式

  • 举例:电脑备份,电脑类里面有一些属性,User类里面记录这个电脑对象,恢复方法就是调用返回电脑对象的属性

组合模式

  • 也可参考设计模式19章
  • 举例:抽象类Company里面有添加、删除、展示、履行职责等抽象方法,然后财务部,人事部类都继承自Company基类实现里面的具体方法,然后具体公司的类也继承自Company抽象类并且实现里面的方法参数是抽象类Company,传入的是继承自这个基类的各个部门的子类,然后用List搜集起来就形成了一个具体的公司,这就是组合方法

迭代器模式

  • 设计模式第20章
  • 举例:迭代器抽象类里面有First、Next、IsDone、CurrentItem等抽象方法、抽象类Aggregate继承自迭代器抽象类Iterator里面有创建迭代器对象抽象方法,ConcreateIterator具体迭代器类继承自Iterator里面有ConcreteAggregate对象,实现迭代器的抽象方法

单例模式

  • 大话设计模式第21章
  • 最简单的设计模式也是最常用的设计模式之一

桥接模式

命令模式

责任链模式

中介者模式

享元模式

解释器模式

访问者模式

模式总结


标签:里面,对象,小结,模式,基类,设计模式,方法
From: https://blog.51cto.com/dingxiaowei/6230754

相关文章

  • [生活日记]参与unity非游戏行业开发者大会小结
    今天下午花了半天时间公司全体都去人民广场参与了一个unity非游戏行业开发者大会,主要了解到unity这款全球顶尖之一的游戏引擎的一个发展史,从05年三个美国人技术研发开始,一直到12年开始引进中国,经过这短短两年左右的时间,获得了逛到游戏开发者的喜爱和肯定,它始于游戏,但非终止于游戏,今......
  • 【单例设计模式原理详解】Java/JS/Go/Python/TS不同语言实现
    简介单例模式(SingletonPattern)属于创建型设计模式,这种模式只创建一个单一的类,保证一个类只有一个实例,并提供一个访问该实例的全局节点。当您想控制实例数目,节省系统资源,并不想混用的时候,可以使用单例模式。单例有很多种实现方式,主要分为懒汉和饿汉模式,同时要通过加锁来避免线程......
  • 【Java设计模式】装饰者设计模式
    目录1.装饰者模式(Wrapper)概念2.装饰者是什么?3.装饰者设计模式-参与者3.1组成3.1Demo1.Component(抽象构件)2.ConcreteComponent(具体构件)3.Decorator(抽象装饰类)4.ConcreteDecorator(具体装饰类)5.Test类:3.2总结4.JDK源码中的装饰者设计模式扩展:开闭原则1.装饰者模式(Wra......
  • 设计模式(18)-Command Pattern
    一、 命令(Command)模式命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。......
  • 设计模式
    总体设计模式分为三大类:创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共7种:代理模式、桥接模式、适配器模式、装饰器模式、外观模式、享元模式、组合模式。行为型模式,共11种:观察者模式、策略模式、模板方法模式、迭代子模式、责任链......
  • JavaScript设计模式
    JavaScript设计模式设计模式概念经过代码设计经验总结之后设计出的一种固定解决问题的方式设计模式作用代码复用保证代码可靠性将编程工程化更易被他人理解设计模式的分类(W3C平台)构造器模式,模块化模式,暴露模块模式,单例模式,中介者模式,原型模式,命令模式,外......
  • 设计模式之状态模式(4)
    快过年了,想着请假提前回家,于是就不得不向领导提出申请,这个审批流是怎么实现的那?在设计模式系列之状态模式(2)中主要是通过在状态类中来对状态进行转化和维护。本文基于此实现一个简易版本的审批流程。审批流请假流程如下:说到请假,我就郁闷,就请半天假用问的那么仔细的。还有那位......
  • JavaWeb回顾与小结(三)
    请求与响应概述架构BS架构:Browser/Server,浏览器/服务器架构模式.客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端维护方便,体验一般CS架构:Client/Server,客户端/服务器架构模式开发,维护麻烦,体验不错请求(HttpServletRequest):获取请求数据响应(HttpServletRes......
  • JavaWeb回顾与小结(二)
    AjaxAjax介绍概念AsynchronousJavaScriptAndXML,异步的JS和XML作用数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术原生Ajax准备数据地址创建XMLHttpRequest对象:......
  • JAVA设计模式学习10——组合模式
    组合模式(Composite)就是把部分和整体的关系用树形的结构来表示,从而使客户端能够把部分对象和组合起来的对象采用同样的方式来看待。树图结构一般包含一个根节点,若干个树枝和叶子节点。如下图:树结构的类图,其实就是组合模式的简略类图,最上面为抽象节点,左下方为叶子节点,右下方为树......