
浅学设计模式
文章平均质量分 96
傲慢的上校
努力做好一个手艺人
展开
-
面向对象六大设计原则--依赖倒置
Dependence Inversion Principle,DIP(依赖倒置)High level modules should not depend upon low level modules. Both should depend upon abstractions. (高层模块不应该依赖底层模块,两者都应该依赖抽象)每一个逻辑的实现都是由原子逻辑组成的,不可分割的原子逻辑就是低层模块,原子逻辑的再组装就是高层模块(示例图如下图所示)原创 2024-06-24 18:36:18 · 5138 阅读 · 0 评论 -
浅学设计模式之桥接<Bridge>模式(1)
概述: 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图: 将抽象部分与实现部分分离,使它们都可以独立的变化。原创 2012-06-08 23:23:57 · 4757 阅读 · 0 评论 -
浅学设计模式之桥接<bridge>模式(2)
今天一直心绪不宁,被一些事情所困扰,希望能有个好的过程以及结果而不是自己的空想。看一下桥接模式吧,个人感觉这个模式是个比较容易理解的模式,但是在真正应用的时候还是需要一定的经验。 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模原创 2012-12-02 00:08:22 · 5380 阅读 · 9 评论 -
浅学设计模式之状态<state>模式
State模式定义: 不同的状态,不同的行为; 或者说,每个状态有着相应的行为.使用情况: 状态模式在工作流或游戏等各种系统中有大量使用,甚至是这些系统的核心功能设计,例如在典型的OA中,一个批文的状态有多种:未办;正在办理;正在批示;正在审核;已经完成等各种状态,使用状态机可以封装这个状态的变化规则,从而达到扩充状态时,不必涉及到状态的使用者。 在网游中,一个原创 2012-06-01 17:15:07 · 2459 阅读 · 8 评论 -
浅学设计模式之建造者(Buildler Pattern)模式及在android中的应用
被自己用一根香蕉收买后,舒舒服服的洗完澡以后,认认真真的做完50多个仰卧起坐以后,在得到自己想要的消息后,好吧,不管是无意或者有意。好吧,现在就将近12点了,关于建造者模式,是今天自己再看刘伟老师的设计模式PPT的时候学习的,在《Head First 设计模式》那本书里是没有讲这个建造者模式,好吧,再一次说明,关于设计模式系列文章的文字部分大部分是从网上整理而来,代码部分由自己完成,因为自我感觉还原创 2012-11-23 00:35:21 · 10692 阅读 · 6 评论 -
浅学设计模式之策略<Strategy>模式及在android中的使用
策略模式(Strategy):它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets th原创 2012-05-24 21:55:43 · 4478 阅读 · 0 评论 -
浅学设计模式之适配器<Adapter>模式
适配器模式(adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。有两类适配器模式:·对象适配器模式 - 在这种适配器模式中,适配器容纳一个它我包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。·类适配器模式 - 这种适配器模式下,适配器继承自已原创 2012-05-26 23:06:57 · 2934 阅读 · 2 评论 -
浅学设计模式之观察者<Observer>模式及在android中的应用
最近在学习下设计模式,而加深学习的不错的方法就是把心得写出来吧。记录下自己的理解。现在自己看的书是《head.Frist设计模式》这本书。比较不错,想学习设计模式的朋友可以看下这本书。 观察者模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。原创 2012-05-18 23:34:54 · 7710 阅读 · 7 评论 -
浅学设计模式之装饰者<Decorator>模式
定义 装饰者模式:动态的将责任附加到对象上,若要扩展功能,装饰者提供比继承更有弹性的替代方案。就增加功能来说,Decorator模式相比生成子类更为灵活。设计原则: 相信大家现在对装饰者模式都应该很清楚了吧!那么,就像我们在前面的文章里反复强调的一样,设计原则远比模式重要,学习设计模式的同时一定要注意体会设计原则的应用。这里我们再来看看装饰者模式里都符合那些主要的原创 2012-05-21 22:59:21 · 4632 阅读 · 2 评论 -
浅学设计模式之简单工厂模式、工厂模式、抽象工厂模式
一、简单工厂 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 其包括三个角色: 工厂(Creator)角色 :简单工厂模式原创 2012-05-22 23:40:19 · 8402 阅读 · 4 评论 -
浅学设计模式之单例<singleton>模式
关于单例模式,可能是23种模式里面最容易理解的一种模式了,这篇文章里主要是整理了一下从网上搜集的材料,文字部分大部分直接从网上拷贝而来。中间有部分自己的理解。 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中原创 2012-05-24 16:57:33 · 2889 阅读 · 9 评论 -
浅学设计模式之命令<command>模式
概念 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)关系图:看下命令模式是有哪些角色来组成的吧。原创 2012-05-25 22:51:11 · 2788 阅读 · 4 评论 -
浅学设计模式之迭代器<Iterator>模式
概述 迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则原创 2012-05-29 16:19:39 · 15016 阅读 · 4 评论 -
浅学设计模式之外观<Facade>模式
外观模式是软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。下图是状态模式的UML图。 结构 Facade 这个外观类为子系统中Packages 1、2、3提供一个共同的对外接口 Clients 客户对象通过一个外观接口读写子系统中各接口的数据资源。 Packages 客户可以通过外观接口读取的内部库。 下面看下一个小例子吧,看DV原创 2012-05-27 13:18:35 · 2641 阅读 · 2 评论 -
浅学设计模式之模板<Template>方法模式及在android中的应用
一、引子 这是一个很简单的模式,却被非常广泛的使用。之所以简单是因为在这个模式中仅仅使用到了继承关系。 继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子。“使用委派关系代替继承关系”,“尽量使用接口实现而不是抽象类继承”等等专家警告,让我们这些菜鸟对继承“另眼相看”。 其实,继承还是有很多自身的优点所在。只是被大家滥用的似乎缺点更加明显了。合理的利用继承关系,还是能对你的系统设计起到很原创 2012-05-27 21:48:30 · 4347 阅读 · 4 评论 -
浅学设计模式之组合<Composite>模式及在Android中的应用
定义 组合模式允许你将对象组合成树形结构来表现出“整体/部分”层次结构。组合能以一致的方式处理个别对象以及对象组合。结构图 用户使用Compoment类接口与组合结构中的对象进行交互。如果接受者是一个叶节点,则直接处理请求。如果接受者是Composite,它通常将请求发送给他的子部件,在转发请求之前或者之后可能执行一些辅助操作。代码示例co原创 2012-05-30 14:39:02 · 4083 阅读 · 2 评论