设计模式初探(1)

写在本系列最前面:

在以前的印象中,设计模式似乎是一个非常高大上的东东,但是呢,要想从一个码农进阶到一个工程师,怎么能绕过这东西呢。无奈,找各种设计模式的书来看,得益于自己学习过多种语言的经验,先后学习了java,php,javascript里的设计模式后,总算对设计模式有了一知半解的了解,于是乎,想着将自己理解的东西记录一下,以便后用(健忘症必备技能)。

为什么学习设计模式

1、设计可复用的面向对象的应用;(按套路出牌不会吃亏)

2、提高编程效率,减少重复编码;(不是复制粘贴)

3、帮助编程者快速确定系统的解决方案;(复用或稍微修改下以前的方案)

4、帮助构建模块化系统,降低模块之间耦合度;(牵一发不用动全身)

关于设计模式本身

    模式名称:能够形象的表示该模式的核心功能或效果

    问题:该模式能够解决哪些问题

    解决方案:该模式具体的工作原理与方式

    效果:使用该模式设计之后较不使用该模式有什么明显的提升效果;

以后学习每一种模式也都针对这四点去吃透它!

更多的准备工作

1、模式依据目的可分为:

创建型:与对象的创建有关,基本模式为工厂方法模式;
结构型:处理类或对象的组合,基本模式为代理模式;
行为型:对类或对象怎样交互和怎样分配职责进行描述,基本模式为注册模式;

2、依据作用范围,分为类模式和对象模式。类模式处理类和子类之间的关系,编译时已经确定;对象模式处理对象间的关系,更具动态性

3、客户请求是使对象执行操作的唯一方法,操作又是对象改变内部数据的唯一方法;

4、严格反映当前现实世界的模型并不能产生也能反映将来世界的系统——所以我们需要更高层次的抽象类。

5、所谓对象的粒度指的是对象的大小和数目上的度量结果。

6、发送给对象的请求和它的相应操作在运行时刻的连接就称之为动态绑定

7、动态绑定允许你在运行时刻彼此替换有相同接口的对象,这种可替换性称为多态

8、对象的实现由类决定,类指定了对象的内部数据和表示,也定义了对象所能完成的操作。对象通过类的实例化来创建。

9、新的类可通过继承已存在的类来定义(注意,对象是创建,而类是定义!!),子类继承父类时包含了父类定义的所有数据和操作。子类的实例对象包含所有子类和父类定义的数据,且他们能完成子类和父类定义的所有操作。

10、抽象类的目的是:为它的子类定义公共接口。抽象类将它的//部分或全部//(注意,这里可以是部分,意味着抽象类可以在自身中实现部分操作)操作的实现延迟到子类中(这些操作就不用再抽象类自身中去实现,就是写一个空方法)。

11、抽象类不能被实例化!!!

12、在抽象类中定义却没有实现的操作被称为抽象操作。

13、混入类(mixin)是给其他类提供可选择的接口或功能的类,它不能被实例化,并且要求多继承。

14、针对接口编程,而不是针对实现编程。

    不将变量声明为某个特定的具体类的实例对象,而是让它遵从抽象类所定义的接口。

15、面向对象系统中功能复用的两种最常用的技术是类继承和对象组合。

16、类继承可以比较方便地改变被复用的实现,但它无法再运行时改变继承自父类的实现,而且破坏了封装性,因为父类对子类暴漏了细节,并且父类的改变必然引起子类的变化,增加了耦合。

17、对象组合是通过获得对其他对象的引用而在运行时刻动态定义的。由于“黑箱复用”的特性,对象彼此间通过接口引用,并不破坏封装性,而且,它能减少类继承的规模。

18、优先使用对象组合,而不是类继承。

理想情况下,你不应为获得复用而去创建新的构件,因为使用对象组合技术可以获得你需要的功能。

19、委托是一种组合方法,它使组合具有与继承同样的复用能力。接受请求的对象将操作委托给它的代理者(类似于子类将请求交给它的父类处理)。委托方式为了使被委托的操作可以引用接受请求的对象,将自己传给委托者(相当于this引用)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 10:44:03

设计模式初探(1)的相关文章

设计模式初探—简单工厂模式

为什么要学习设计模式? 可重用.可维护.可扩展.灵活性好 什么是简单工厂模式? 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂模式的好处? (1)将具体业务和实现进行分离 (2)将多个具体业务之间进行解耦 解决的问题? 单独的类来创造

设计模式初探——简单工厂模式

学习设计模式已经有一段时间了,<大话>也正看第二遍,可是却迟迟不敢下笔.算了,先拿简单的开刀吧. 简单工厂模式是设计模式中一种比较简单.基础的设计模式. 定义: 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 包含元素: 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象. 抽象产品(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的

设计模式初探(一)

序,设计模式就像修炼武功的心法口诀.虽不实用,但是却威力无穷,需要我们在代码设计,框架设计时多多品味. 一.Facade模式 一句话描述:为子系统中的一组接口提供了一个统一的接口. 解释:facade定义了一个更高级别的接口,使得子系统更易于使用.你可以使用facade来将一些复杂的对象交互简化成一个单独的接口. 二.

适配器设计模式初探(Java实现)

本篇随笔主要介绍Java实现设配器设计模式. 先来看下待解决的问题: (图片转自http://blog.csdn.net/jason0539) 由上图的情况可知,欧洲壁式插座只有三足插口,如果我们想要使用的是两足插口,就需要适配器来进行转换.(适配器一面是三足插口,一面是两足插口) 适配器模式一般有两种实现方式: 1.类适配器 2.对象适配器. 先来看下类适配器的UML图:  客户端只能操纵 Target 接口的 Request 方法来进行需要的操作(当然这里就相当于调用 Request 方法使

装饰器设计模式初探(Java实现)

本篇随笔主要介绍用Java实现简单的装饰器设计模式: 先来看一下装饰器设计模式的类图:  从图中可以看到,我们可以装饰Component接口的任何实现类,而这些实现类也包括了装饰器本身,装饰器本身也可以再被装饰. 下面是用Java实现的简单的装饰器设计模式,提供的是从基本的加入咖啡入手,可以继续加入牛奶,巧克力,糖的装饰器系统. 1 interface Component { 2 void method(); 3 } 4 class Coffee implements Component { 5

JS设计模式初探

目的:设计模式众多,尝试用博客记录下学到的不同设计模式的优劣,方便以后查阅. 前言:半年前看高程的时候看到设计模式这章,云里雾里,不是看不明白,而是不明白为啥要如此麻烦只为创建一个对象.直到最近完成了自己第一个小项目,才体会到当代码量多起来时没有适当的规范与限制是多么大的灾难.于是重新翻开高程,总结下几种我学到的简单设计模式的优劣. 正文:本文一共介绍7种设计模式以及他们的应用场景.优劣. 1.工厂模式 直接用函数来封装对象,将对象作为返回值. function person (name,age

Java设计模式(一) 设计模式初探——简单工厂和工厂方法模式

一.引言 在面向对象的编程中,创建对象是最基本也是最常用的一种操作,合理的对象创建方法对提高代码的复用性和降低模块之间的耦合来说极其重要,而工厂模式就是专门为合理创建对象而提出的.在GoF总结的23种常用的设计模式中,工厂模式就有3种,分别为简单工厂.工厂方法和抽象工厂,本文将结结合简单的例子对面向对象的编程.简单工厂模式和工厂方法模式进行较为详细介绍,并给出完整的代码示例,至于抽象工厂方法,我将在后续的博客中进行详细地介绍. 借助于面向对象编程的封装特性,我们将一个完整事物的不同功能模块封装成

设计模式初探1——策略模式(Strategy Pattern)

最近在看<Head First 设计模式>,感觉挺有意思的,本系列的多数内容也是引自于它. 不过会加入一些自己的理解,代码肯定也是敲自己的啦~ 其实呢,我们在日常编程时或多或少都在使用着设计模式,只是我们没有意思它有那么一个"官方"的名称罢了, 比如下面的"策略模式"就是这样: 策略模式:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 太官方了哈,还是写个测试代码看看: 为了鲜明,我们只保留主要代码,大致意思出

设计模式初探

1.适配器模式 类适配器 对象适配器 默认适配器模式 2.桥梁模式 将抽象化与实现脱耦,使得二者可以独立的变化 桥接:为被分离了的抽象部分和实现部分来搭桥 如何桥接:桥接在程序上就体现成了在抽象部分拥有实现部分的接口对象 谁来桥接的问题: 就是谁来负责创建抽象部分和实现部分的关系 3.组合模式 Composite 将对象组合成树形解雇以表示"整体-部分"的层次结构 4.享元模式 FlyWeight 采用一个共享来避免大量拥有相同内容对象的开销 5.责任链模式 当客户提交一个请求时,从第