设计模式小结

简介: 简单工厂模式http://blog.csdn.net/u010850027/article/details/21878639将具有相同属性事物用一个抽象基类,里面具有抽象方法来作为父类,然后其他子类通过继承来实现这个基类,通过重写实现基类里面的抽象方法...

简单工厂模式

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

策略模式

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

单一职责原则

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

开放-封闭原则(OCP)

依赖倒转

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

装饰模式

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

代理模式

工厂模式

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

原型模式

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

模板方法模式

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

迪米特法则

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

外观模式

建造者模式

  • 参考大话设计模式第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的子类之间,来减少相互依赖

适配器模式

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

备忘录模式

组合模式

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

迭代器模式

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

单例模式

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

桥接模式

命令模式

责任链模式

中介者模式

享元模式

解释器模式

访问者模式

模式总结

相关文章
|
7月前
|
设计模式 存储 安全
【设计模式】五种创建者模式
创建者模式 创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。 创建型模式分为: 单例模式 工厂方法模式 抽象工程模式 原型模式 建造者模式 单例设计模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式的结构 单例模式的
29 0
|
4月前
|
设计模式 Java 测试技术
设计模式之-降龙十八掌
设计模式之-降龙十八掌
35 0
|
5月前
|
设计模式 前端开发 C++
什么是设计模式?
什么是设计模式?
42 0
|
8月前
|
设计模式 Java
懒羊羊学设计模式-创建者模式
懒羊羊学设计模式-创建者模式
|
10月前
|
设计模式 算法 C#
使用c#实现23种常见的设计模式
使用c#实现23种常见的设计模式
56 0
|
10月前
|
设计模式
|
12月前
|
设计模式 消息中间件 Java
一起来学设计模式之认识设计模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式基本概念,它的基本原则以及有哪些设计模式~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 设计模式初识 设计模式是一种经过验证的、被广泛应用的解决特定问题的软件设计方案,它提供了一种在软件设计中反复使用的解决方案。设计模式通常描述了一个问题的情境、解决方案和解决方案的优点和缺点。设计模式不是一种具体的编程语言特性或库,而是一种通用的设计思想和方法。
|
设计模式 Java
|
设计模式 算法 安全
11种常用的设计模式
有这么一个很形象的比喻,把写代码比作是建房子,代码比作是砖瓦、一个完整的系统就好比是一栋高楼大厦、程序员无疑就好比是建(ban)筑(zhuan)工,这些很表面的东西我们都可以很形象深刻的理解,其实要设计和开发一个系统远远不只这些东西,深挖表象之下隐藏着的细节往往才是灵魂所在,诸如:算法和数据结构、框架、设计模式等,设计模式是一个虚幻的抽象的概念,好比建造房子时的设计理念方案一样,一个软件系统扩展性、可维护性以及稳定健壮性如何,很大程度上取决于设计模式。
11种常用的设计模式
|
设计模式 Java
23种设计模式-总揽篇
23种设计模式-总揽篇
23种设计模式-总揽篇