随笔分类 -  设计模式

摘要:谓动态代理,就是在运行时动态地创建一个代理类,实现一个或多个接口,并将方法的调用转发到你所指定的类。那么静态代理和动态代理有什么区别呢?静态代理提前都知道要帮A做那些事儿,有心理准备,行动起来比较快。但是由于A非常啰嗦,A需要表达强烈的爱意,跟B说了一大顿,B都需要记下A要干啥,到时候去帮A做。而动... 阅读全文
posted @ 2014-04-14 16:20 youhumian 阅读(175) 评论(0) 推荐(0)
摘要:IOC:依赖对象的创建获得被反转,所谓依赖注入,就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。是一种将组件依赖关系的创建和管理置于程序外部的技术。概念:对象实现的控制反转,将设计好的类交给系统去控制,而不是在类内部控制。作用: IOC容器即配置文件,利用它来配置系统,扩充功能或替换... 阅读全文
posted @ 2014-04-14 09:46 youhumian 阅读(291) 评论(0) 推荐(1)
摘要:定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类接收消息,然后通过消息影响其他同时类。同事类:如果一个对象会影响其他的对象,同时也会被其他对象影响,那么这两个对象称为同事类。在类图中,同事类只有一个,这其实是现实的省略, 阅读全文
posted @ 2013-09-20 11:26 youhumian 阅读(431) 评论(0) 推荐(0)
摘要:经典的《设计模式》一书归纳出23种设计模式,本文按《易学设计模式》一书归纳分类如下:1.创建型模式前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:简单工厂模式(Simple Factory);工厂方法模式(Factory Method);抽象工厂模式(Abstract Factory);创建者模式(Builder);原型模式(Prototype);单例模式(Single 阅读全文
posted @ 2013-09-20 10:09 youhumian 阅读(177) 评论(0) 推荐(0)
摘要:树一、树的结构形式二叉排序树:有序树一般二叉树:非二叉树:二、常见类型题遍历类型 树的六种遍历方法(递归和循环两种方式)和层次遍历(利用队列) 树的深度 是否型问题是否存在某个元素集合是否存在符合某个规律的子结构 树的重新构造 1 树的镜像 必知知识:1 树的各种遍历特点、算法、层次遍历算法【增加队列来实现】2 树的深度、路径遍历 【通过增加辅助栈】 阅读全文
posted @ 2013-08-04 11:35 youhumian 阅读(144) 评论(0) 推荐(0)
摘要:界面组装器模式刘 岳林, 软件工程师, IBM CSDL刘岳林,IBM 中国软件实验室(CSDL BJ)成员,在 OOAD, RUP, XP, Architecture/Design Pattern 方面有着丰富的项目实践经验,对架构设计,项目、过程管理有过深入的研究,技术方向为 J2EE, SOA, Grid, AOP ,PKI。你可以通过 linuxlyl@cn.ibm.com 或 yuelin_liu@msn.com 联系他。简介:本文提出了一种界面设计中的架构模式-界面组装器模式,它致力于分解界面,将界面和组装行为解耦,将界面逻辑处理与领域逻辑处理解耦,这样我们在开发 GUI 胖客户端 阅读全文
posted @ 2013-08-04 10:55 youhumian 阅读(350) 评论(0) 推荐(0)
摘要:1 外观模式Facade定义:提供系统一组接口的一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。理解:外观模式作为结构型模式中的一个简单又实用的模式,外观模式通过封装细节来提供大粒度的调用,直接的好处就是,封装细节,提供了应用写程序的可维护性和易用性。外观模式一般应用在系统架构的服务层中,当我们是多个不同类型的客户端应用程序时,比如一个系统既可以在通过Web的形式访问,也可以通过客户端应用程序的形式时,可能通过外观模式来提供远程服务,让应用程序进行远程调用,这样通过外观形式提供服务,那么不管是什么样的客户端都访问一致的外观服务,那么以后就算是我们的应用服务发生变化 阅读全文
posted @ 2013-08-04 09:45 youhumian 阅读(235) 评论(0) 推荐(0)
摘要:1 组合模式和装饰模式相同:都是一个对象包含另外一个对象,对象之间是耦合联系的不同点:组合模式是向下包含,装饰模式是向上包含 阅读全文
posted @ 2013-08-03 21:08 youhumian 阅读(308) 评论(0) 推荐(0)
摘要:1 组合模式定义:将对象组合成树形结构以表示,部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。理解:如果需求体现的是某种树形组织关系的话,可以考虑使用组合模式。作用:希望用户忽略组合对象和单个对象的不同,统一的使用组合结构中的所有对象(封装变化的思想)。内容:抽象组合对象,叶子对象,组合对象内部的组合对象UML图:实现代码://抽象的部件类描述将来所有部件共有的行为 public abstract class Component { protected string name; public string Name { get { return name; } se 阅读全文
posted @ 2013-08-03 20:59 youhumian 阅读(562) 评论(0) 推荐(0)
摘要:1 享元模式定义:运用共享技术可以有效的支持大量细粒度的对象。理解:利用轻粒度创建工厂,调用可以共享的对象,减少大量类似对象的创建开销,降低存储资源的消耗。作用:通过共享大幅度的减少单个实例的数目。内容:Flyweight对象工厂,Flyweight抽象对象,Flyweight具体对象,非共享Flyweight对象其他:享元对象的内部状态为可以共享的对象;外部状态为不可以共享,随环境变化的对象,如用户信息。使用环境:1 一个应用程序使用了大量的对象。2 完全由于使用大量的对象,造成很大的存储开销。3 对象的大多数状态都可以变为外部状态。4 如果删除对象以外的状态那么可以用相对较少的共享对象取代 阅读全文
posted @ 2013-08-03 19:28 youhumian 阅读(209) 评论(0) 推荐(0)
摘要:1 工厂方法模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到一个子类。理解:每个实现对应一个具体的工厂类。每一个工厂依赖一个具体的实现,工厂的存在依赖其具体的实现 客户端需要知道具体的工厂类。内容:抽象工厂类及具体工厂,操作抽象类及具体操作类,工厂类创建操作类,每个工厂类依赖具体的操作类。作用:将简单工厂模式的修改从工厂类转移到客户端,符合开放封闭原则。缺点是开发量较大,客户端需要修改。 1.在编码时不能预见需要创建哪种类的实例。 2.系统不应依赖于产品类实例如何被创建、组合和表达的细节其他:解决客户端需要修改的策略:利用反射机制和XML配置,完成 阅读全文
posted @ 2013-07-31 11:34 youhumian 阅读(173) 评论(0) 推荐(0)
摘要:转自其他在OO设计领域,我们知道前人总结了不少的经验,许多的经验在现代软件工程过程中已经被认为是原则来遵守。下面笔者摘抄几项下文涉及到的OO原则的定义。OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。我的理解是,对于一个已有的软件,如果需要扩展,应当在不需修改已有代码的基础上进行。DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。我的理解是,对于不同层次的编程,高层次暴露给低层次的应当只是接口,而不是它的具体类。LoD(迪米特法则,Law of Demeter):只与 阅读全文
posted @ 2013-07-31 10:34 youhumian 阅读(129) 评论(0) 推荐(0)
摘要:1 简单工厂模式定义:是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。理解:对象的创建交给工厂处理内容:工厂抽象类,具体实现类作用:对象创建的作用交给工厂其他:由于工厂类集中了所有实例的创建逻辑,违反高内聚责任分配原则,因此一般只在很简单的情况下应用。不属于23种GOF设计模式之一UML图:2 demo比如有个国家的运动员协会,他们是负责登记与注册职业运动员的(就好像我们国家的体育总局,呵呵,无论足球篮球还是乒乓球的运动员都必须在这里注册才能拿到我们国家职业运动员牌照)。一家体育俱乐部(比如篮球的广东宏远,足球 阅读全文
posted @ 2013-07-31 10:31 youhumian 阅读(149) 评论(0) 推荐(0)
摘要:1 桥接模式:将抽象部分和它的实现部分分离,使不同的实现部分可以独立的变化。抽象部分可以理解为功能的整体描述,实现部分为不同类型的实现方式。理解:实现系统可能有多角度分类,每一种分类有可能变化,把这种多角度分离出来,让他们独立的变化,减少他们之间的耦合。作用:当实现系统可能有多角度分类的时候,每种分类都有可能有变化。如手机,手机分类可以按品牌,也可以按软件。内容:每一种实现都是一种抽象类,主实现用设置函数与其他实现联系原则:合成、聚合复用原则,尽量使用合成/聚合,尽量不要使用类继承。其他:用继承关系的时候,一定是 IS-a 的关系时考虑使用,而不是任何时候都用。2 demo 实现一个网上国内手 阅读全文
posted @ 2013-07-31 09:51 youhumian 阅读(204) 评论(0) 推荐(0)