
设计模式
TinySun
一只正在蛹中挣扎蜕变的生物
展开
-
设计模式(四)——Bridge 模式(组合模式)
设计模式(四)——Bridge 模式 理解: 初遇“桥模式”,会为他的定义所迷茫——将抽象部分与其实现部分相解耦,使他们独立的变化?所谓“抽象”与“实现”,指的是? 暂且不论这个定义如何理解,先看看在何种情况下会使用到他。我们定义了一个抽象类A,他有多个的泛化类:A1,A2,A3。而A1,A2,A3也算不上一个具体类,因为要成为具体类,还缺少了B属性原创 2012-04-09 10:43:57 · 726 阅读 · 0 评论 -
设计模式(六)——组合起来:用模式思考
设计模式(六)——组合起来:用模式思考 Alexander 的《建筑的永恒之道》,讲的是建筑,却对我们软件设计仍有帮助,为什么?因为他描述了一种泛型,一种设计师都应该遵循的泛型。他告诉我们,要设计出一个有活力的建筑,需要有无名特质,而单靠机械的将不同部件进行组合,是不可能达到这个目标的。任何一个美好的事物都不是由各个部分进行组装的方式而形成的。正如你需要一朵花,你不可能用花瓣原创 2012-04-18 16:48:14 · 589 阅读 · 0 评论 -
设计模式(十三)——代理模式(Proxy)
一、理解: 代理模式,用于为其他对象提供一种代理以控制对该对象的访问。 为什么不直接使用某个对象,却要“画蛇添足”的在外部增加一层,间接对其进行访问?考虑下面的一些情况:1、某个图形界面初始化时,实例化某些对象需要较长时间。但我们又不希望界面停顿太久,因此,我们将这些对象的初始化时间进行控制,延迟到第一次使用的时候。2、对于不同用户,希望提供某个对象的不同方法,以控制该原创 2012-12-19 17:35:51 · 1030 阅读 · 0 评论 -
OOAD&设计模式,学习点
1、面向对象设计的5大原则是指开闭原则(Open-Close Principle),单一职责原则(Single-Responsibility Principle),接口隔离原则(Interface Isolation Principle),里氏替换原则(Liskov Substitution Principle),依赖倒置原则(Dependence Inversion Principle)。(原创 2012-03-29 11:01:56 · 674 阅读 · 0 评论 -
设计模式(一)——重新认识面向对象
要学好设计模式,首先要从转变自己的对于面向对象的概念开始。按照抽象程度的不同,观察对象有3种视角:概念、规约、实现。而之前看面向对象的概念都是从实现的角度看的,现在,要站得更高,用更加抽象的角度去看待这些概念。 最早看待对象的方式,是最底层次的方式,以实现视角来看对象,对象就是代码和数据,以及他们之间的交互。 再抽象一些,站在规约的角度上看,这些实现代码被封装成原创 2012-03-17 21:48:25 · 674 阅读 · 0 评论 -
设计模式(十二)—— Factory Method 模式
理解: 当我们有一个类,他有多个派生类;该类中有一个对象,有多种实现方式。在该类中,我们需要使用该对象的方法,但实例化该对象是由不同的派生类确定的(象棋棋盘中是象棋对象,五子棋棋盘中是五子棋对象),因此,我们在父类中不能够进行初始化,只能够将其初始化延迟到子类当中。实现方式是通过一个protected的createXXX()函数,让子类重写,以获得相应的实例化对象。原创 2012-06-09 17:07:43 · 861 阅读 · 0 评论 -
设计模式之启程
现在开始,每周至少详细得学习一个设计模式,并将其总结于文章当中。1、首先,说说什么是设计模式?答:实现软件功能时,为了满足其非功能性需求,一些前辈总结出的一套可复用的设计方案。2、为什么要学习设计模式?答:为了实现代码的时候,能够考虑到各种设计导致的后果。以设计出可扩展性好的、可复用的软件。并且学习设计模式,可以让我们从一开始就过分关注细节中解放出来,让我们用高层次的、抽象的视角看原创 2012-03-15 18:01:21 · 633 阅读 · 0 评论 -
设计模式(五)——Abstract Factory模式
设计模式(五)——Abstract Factory模式 理解: 对于抽象工厂模式,理解上来说很容易。实现上说,也很容易。就是在抽象类中,定义了一系列的create方法,来创建对象,在子类中对于这些方法进行实现。客户端要创建对象时候,不直接new 而是使用AbstractFactory的create 方法进行获取对象。这样,将对象的创建和对象的使用分离开来,避免了需要使用原创 2012-04-17 17:20:59 · 541 阅读 · 0 评论 -
设计模式(十一)——单例模式
理解: 单例模式,当一个项目中,仅希望运行一份该类的实例时,可以用全局变量,但并不能保证该类只被初始化一次。最好的办法是类里面有内部的机制保证这一点。单例模式就是如此而来。分为了单线程下和多线程下的单例模式。Singleton和double-checked,或者饿汉式和懒汉式。优点:能够保证一个类仅被实例化一次。原创 2012-05-31 21:34:20 · 1115 阅读 · 0 评论 -
设计模式(十)—— Template 模式
理解: Template模式,很好理解,就是写了一个通用的模板来实现一个方法,用户需要做的就是往里面(在派生类中)填充内容(实现方式)。优点:这种方式,可以很好地消除代码冗余,使得从if-else 和 复制粘贴中解脱出来。区别于Strategy:模板方法是改变算法的一部分。策略模式是使用委托改变整个算法。原创 2012-05-13 16:16:33 · 489 阅读 · 0 评论 -
设计模式(八)——Decorator 模式
理解: Decorator最简单的方式,就是为一个对象添加职责(并且能够适应原来使用他的对象的需求(接口不变)),但如果仅仅是为了给一个对象添加职责,而使用该模式,显得有些浪费并且冗余。实际上,想想java的I/O 流的实现,使用了大量的装饰者模式,是为了让对于流的各种格式能够方便的进行组合,以迎合不同用户的需求。称之为——动态责任链。因此,这应该算是decorator模式最大原创 2012-05-09 20:11:48 · 721 阅读 · 0 评论 -
设计模式(九)——Observer 模式
理解: 观察者模式,刚接触的时候,感觉这是一个十分有创意的模式。能够采用这种 “订阅---发布”的方式去将对象解耦。考虑到某个对象的改变比如一个表格改变的同时,与之关联的各种图形界面或者分析数据都需要改变,而如果让表格去通知各个对象,违背了“一个对象,一个职责”的原则。于是,添加一个第三方,即作为存储数据的第三方。当表格的变动导致了数据的改变,存储数据的对象便能够通知各个应该原创 2012-05-09 20:30:27 · 629 阅读 · 0 评论 -
设计模式(七)——迈向新的设计方式
设计模式(七)——迈向新的设计方式 之前提到了使用Alexander提到的方式去思考,去构件一个系统。这种先找出各个模式的方式有时候并不适用,因为在一些情况下,你很难找出某些隐含在系统之中的模式。从OO的原则中,我们可以悟出一些东西。“开闭原则”,需要我们对于修改封闭对扩展开放。“依赖倒置原则”,要求我们总是依赖于抽象而不应该依赖于具体类,因为具体类总是有变化的可能。上面这原创 2012-05-02 15:51:57 · 581 阅读 · 0 评论 -
设计模式(三)——Adapter 模式
设计模式(三)——Adapter 模式 理解:一些时候,用户希望能够使用某个类的功能,这个很容易,直接实例化这个类的对象,并调用对象的方法就可以了。但如果用户希望该类所实现的功能点能够符合他定义的接口(或者该类符合他的继承结构,是某个基类的子类),以便他能够使用声明的接口(或者基类)进行对象方法的调用时(或者当进行多态调用时),便遇到问题了——接口不符合(或不是某个类的子类)!使用原创 2012-03-22 10:58:30 · 579 阅读 · 0 评论 -
设计模式(二)——Facade 模式
Facade 模式 理解 . 当一个系统由于设计问题或业务原因显得十分复杂时,要直接使用该系统显得无从入手。有了Facade模式,可以使得新手也能够对于这个复杂的系统运转自如。Facade模式中,提供了一个为用户使用的简洁方便的接口,并将各种服务的实现方法向用户屏蔽,这样,新手用户仅需要对这个接口进行操作,就能够使用该系统的大部分功能,方便快捷。原创 2012-03-20 11:00:27 · 763 阅读 · 0 评论 -
设计模式之实践
学习设计模式,不该只是纸上谈兵,在实际项目中的应用是很重要的。单例模式与工程模式已经使用的过于泛滥了,前几日在面试中,被问到平时在项目中用到了哪些设计模式时,竟无法说出,都怪在平时不注意对项目中用到的模式进行总结所致。因此,今日,将在项目中用过的设计模式进行一个总结。1、单例模式。一般项目里面都会用到,涉及到有一些工具类,用于提供某些静态方法,便会使用到单例模式。2、抽象工厂模式。一般说道原创 2012-12-03 17:11:05 · 1134 阅读 · 0 评论