设计模式总结

设计模式是一些前人对面向对象编程方式进行总结而得出的一些巧妙的编程技巧,通过学习《大话设计模式》这本书,一方面巩固了对c#的学习,还有一方面进一步了解了面向对象编程技巧。模式有非常多种。各有优缺点。可是还要根据实际情况而定。并非不论什么情况下某个模式都适用的,所以某个模式。指的是在某个详细情况下用这样的方法去编程实现。能够降低系统的开销、优化程序代码、提高效率等等。

以下则是我学习这本书的时候。每敲完一个实例之后。都用自己能理解的话对这个模式的理解的记录,既不官方,也不太通俗易懂,至少自己能看懂而已,有些还弄的不太懂,希望掠过的大鸟可以指导指导。当中也有一部分是对面向对象里面的一些元素的理解。也都请多多批评不吝赐教。顺序不太对,还有的是缺少了非常多模式,这里是由于当时敲完之后没进行及时的总结。然后就忘了,以后有机会再补吧!

原型模式

首先创造一个类A,类中包含各种私有属性和公有方法,可是新增了一个MemberwiseClone()方法(该方法是类里面默认自带的一个特殊的方法)。当你用A实例化一个对象a之后,再调用a的MemberwiseClone()方法赋给用A实例化的还有一个对象b,则b就是a的一个虚拟复制品,当b中使用某个方法传入数据时,那么这个数据就会覆盖原来与a同样的数据。达到了复制对象然后对对象的改动却不影响到其它的数据的作用。

外观模式

有多个子类都有相似的方法,使用的时候都须要共同调用。则能够创建一个类用以实例化这些子类,并分类创建调用这些子类的方法,这样就能够仅仅调用新类的某个方法(包括子类多个方法)来统一调用多个子类的方法。能够降低类间的耦合度

建造者模式

对复杂类抽象出父类。使得子类去实现这些复杂的细节,然后创建一个指挥者类,把父类放进去,与指挥者形成组合关系,实现的时候子类当作參数放进指挥者类中就可实例化出想要的对象。

接口:就像遥控器一样,接口提供一个方法,可是须要外接提供一个參数。然后详细的实现放在了实现的类里面。遥控器须要用户提供如调频的參数。而遥控器并不能播放视频,可是通过遥控器能够控制视频,这就是方法。

抽象类:为什么会有抽象类呢?由于假设没有抽象类的话。详细类假设太多。而且他们有非常多共性,那么要创建这么多类,就要多写非常多反复的代码。

中介者模式

有一个中介类(联合国)。他里面有各个终端类(国家)作为数据成员,创建终端类之后,各个终端类要发送消息给其它终端类,首先经过中介类的推断是发给谁,然后中介类负责找到接受者,然后传递消息。

这样就减轻了终端类的负担(寻找类的负担)。

模板方法模式

把不变的。但在实现里须要用到的代码放到父类中。这样子类在实现的时候仅仅须要调用父类方法和详细实现即可。假设有非常多子类,则都是通过调用父类。所以实现了代码的复用。

工厂方法模式

创造出一个类,不应该直接用来实例化。而是依赖于接口去实现,而假设要实现的类非常多或考虑到扩展,则应该创建一个接口工厂,然后继承这个接口工厂的工厂作为实现这些类的接口,再通过这些类的接口去实现这些类从而产生对象。(太绕了,我有点难以接受)

依赖倒转原则:类依赖于接口实现,接口不应依赖于类,这样无论你添加还是改动,都不会影响到其它类了。

反射-抽象工厂的数据訪问程序。。。没懂

状态模式

假设对象能够处在非常多种状态,那么能够将每一个状态写作一个类,并初始化状态,按线性链接的方式将全部状态链接起来。通过初始状态推断是否为初始。假设不是则转入下一个状态的推断。

适配器模式

某对象依赖于接口,后来扩展别的类之后却无法使用这个接口去訪问那个对象,所以再写一个接口来对接原来的接口。并使这个新街口能适应扩展出来的类(印象不太深,可能不正确)。

备忘录模式

假设某个对象A经历某些事件之后,其数据成员发生变化。假设想恢复到原来的状态,能够提前创建一个对象B用来存储这些数据成员,可是又不要直接进行赋值。还以能够再创建一个对象C用来作为创建对象B的工厂类。这样就能够让对象A通过对象C间接地将数据存储到对象B 里面。

组合模式

创建一个抽象类,子类A和B继承抽象类,可是仅仅有A真正的去实现父类的方法。并可将属于父类的子类装进一个类似数组的容器里面。然后我就不知道为什么要将这些子类放进去了!

单例模式

让自己给自己提供方法实例化自己。并保证仅仅能实例化一个,并把构造函数写成私有,仅仅能依靠全局变量的调用来调用该方法以实现实例化该类。

桥接模式

假设有两个占主体地位的比較顶层的父类,他们当中一个派生出来的类假设一层一层的继承下去。然后由于还有一个基类的不同。又要适应这还有一个类,那么这样就会导致要产生非常多类,并形成复杂的关系。

这个时候则能够让这两个类形成聚合关系,这时候仅仅须要对一个类下功夫(这个类的功能包含将还有一个类当作參数传递下去),就能够让功能就像是在适应一个类就能够了。这两个类之间用聚合符号链接起来像一座桥,所以叫桥接模式。

命令模式

明白的分工,顾客仅仅管下单子。无论肉串怎么做、还有没有,服务员仅仅管推断还有没有肉串。有就提交,以及满足顾客的服务,厨子仅仅管做菜。然后顾客通过提交详细的肉串给服务员。服务员再命令厨子去做,这就是命令模式。能够在命令类里面做个保存命令的数组,然后就能够满足客户添加和撤销命令了。

职责链模式

有不同级别的类,他们所能处理的请求也因级别而异,当接收到请求时,假设不能处理,则把请求传递给自己的上级(要有一个能设置自己上级的方法)。

时间: 2024-10-10 10:14:39

设计模式总结的相关文章

Java设计模式——创建型模式之单例模式

一.概述 作为第一个出场的设计模式,有必要先介绍一下设计模式(引用自百度百科): 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式使代码编写真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式概念的介绍,参见:http://blog.jobbole.com/101076/ 其中涉及的设计原则的概念,参见随笔:http://www.c

10大APP界面框架设计模式详解

随着移动互联网的发展,移动app已经成为了每个互联网公司的标配了,那作为产品经理,我们如何设计出更加符合用户体验的app产品呢?今天和大家分享的就是10中最常见的app界面光甲设计模式,一起来看看吧. 1.标签导航 标签导航是十大界面框架设计里最常用的界面框架设计,也是被业界之内公认的一种普遍使用的页面框架设计.那么这种页面框架设计在作业方面对一个用户来说也是最常见的一种页面框架设计,比如说微博.微信.手机百度.支付宝.淘宝,这些我们所谓的超级APP都是运用的标签导航,无一例外.从这个角度也可以

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的需求. 适配器模式的使用场景 1.当你使用一个已经存在的类,而他的接口不符合你的需求. 2.你想要创建一个复用的类,该类可以与其相关的类或者不可见的类协同工作. 适配器角色 Target:目标接口 TargetImpl:目标实现类 Adapter:适配器 Adaptee:被适配者 代码解析: package com.d

设计模式 2/23 工厂模式

工厂模式是最常用的设计模式之一,用好了,代码优雅,可维护性高,对系统设计会上一个台阶 为什么这么说,因为工厂模式可以牵扯出抽象工厂模式,也有大家都会聊到的简单工厂模式 我们要了解一点,23中设计模式中,不包含简单工厂模式,之所以大家会去聊这个,四个字,渐进明细 通过对简单工厂模式的了解,我们引入工厂这个词,不然一个写代码的,天天给他讲工厂,工厂,工厂,西厂,东厂,会晕 同时,通过逐步的深入,从简单工厂,到工厂模式,再到抽象工厂,渐进明细的过程,逐步深入的理解,比较优劣,择优而为我们所用. 试想我

Java设计模式学习笔记,一:单例模式

开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别

设计模式之单列模式

设计模式之单列模式 1,何为单列模式? 即singleton 在某个类采用了单列模式之后  其只能有一个实列对象 ,并且这个实列对象只能有内部自己创建并提供给外部的调用. 2.实现单列模式的方法 分为 :饿汉式 ,懒汉式 下面为饿汉式实现代码: public calss Singleton1{ //将构造函数私有化 防止外部通过new来创建对象 private Singleton1(){ } //创建一个私有静态变量并直接初始化 类加载的时候直接创建对象 private static Singl

设计模式之原型模式(Prototype)

1.初识原型模式 大家都知道连锁机构是现在灰常流行的商业模式,比如咖啡之翼,那么假设咖啡之翼要在长春新建立一个分店,所经营的产品和以前在其他的城市已经存在的店经营的产品差不多,那么面向对象开发的角度怎么解决这个问题呢?难道要重新的实例化一个咖啡之翼的店??这显然不太好吧,咖啡之翼里面经营的产品(假设是属性吧)都需要重新写,这就是在做大量的重复工作啊,这显然是不符合OO开发思想的.遇到这样的情况,并不是重新建立一个类来解决这样的问题,而是通过设计模式中的"原型模式"来解决这种问题.是这种

对设计模式的总结之简单工厂与策略模式

前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓,本文就说说我对本人对简单工厂模式.策略模式的见解. 简单工厂模式与策略模式 简单工厂模式 工作中,常常遇到需要做一个功能(鸭子),这个功能中含有可控个数的子操作功能(鸭子叫,鸭子跑,鸭子飞),而且子功能在不同的情况下处理方式又不相同(成年鸭子/小鸭子叫,成年鸭子/小鸭子跑,成年鸭子/小鸭子飞).我

设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)

本文主要对设计模式进行大概解说.特别是对工厂模式进行简明的解析: 一.设计模式的分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.訪问者模式.中介者模式.解释器模式. 事实上还有两类:并发型模式和线程池模式. 二.设计模式的六大原则 1.开闭原则(Op