设计模式
jerry_zhang402
这个作者很懒,什么都没留下…
展开
-
开放--封闭原则(Open Closed Principle,OPC)
开放--封闭原则(Open Closed Principle,OPC): 对扩展开放,对修改关闭。是一切设计原则的基础,判断面向对象设计是否正确的最基本原理之一, 实现该原则的核心在于“抽象”。 struts与开闭原则 struts运用MVC技术处理各类任务与事件,其控制器由ActionServlet和Action构成。 ActionServlet采用J2EE原创 2014-11-27 09:01:44 · 726 阅读 · 0 评论 -
行为型模式之命令模式(Command)
命令模式(Command):将一个请求封装一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。可以理解为:一个命令及一个操作,请求方和接收方各自独立操作,请求方无须了解接收方的接口及执行细节。 命令模式结构: 命令(Command):声明执行操作的接口; 命令实现(ConcreteCommand):讲一个接收者对象绑定一个动作原创 2015-01-23 12:16:02 · 361 阅读 · 0 评论 -
创建型模式之工厂方法模式(FactoryMethod)
工厂方法模式:又叫虚拟构造(virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式。它的正式定义为:工厂方法模式定义一个创建对象的接口, 但是由子类决定要实例化的类是哪一个,工厂方法让类的实例化推迟到了子类。 工厂方法模式结构有:抽象工厂,具体工厂,抽象产品,具体产品组成。 抽象工厂是工厂方法模式的核心,它是与应用程序无原创 2014-12-08 18:16:52 · 454 阅读 · 0 评论 -
创建型模式之抽象工厂模式(AbstractFactory)
抽象工厂模式: 提供了一个接口,用于创建相关或依赖对象家族,而不需要明确指定具体类。在实际的项目中,由于需求的变化,需要创建多个对象,此时,如何防止过多的创建方法,以避免客户程序和服务端的紧耦合,这就需要运用抽象方法来解决,解决的方法时创建接口或者抽象类,由子类去继承或实现。抽象方法 模式主要由抽象工厂、具体工厂、产品族构成。 优势: 可以分离原创 2014-12-10 08:45:31 · 367 阅读 · 0 评论 -
行为型模式之责任链模式(Chain of Responsibility)
责任链模式(Chain of Responsibility): 使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 简而言之,就是为多个对象办理同一请求的时机,并且将他们组成一条链,请求过来,能够处理就处理,不能处理的传递给下一个对象,直到解决为止。 责任链模式结构:原创 2015-01-22 09:01:00 · 366 阅读 · 0 评论 -
结构型模式之桥接模式(Bridge)
桥接模式(Bridge):将抽象的部分和它的实现部分分离,使他们都可以独立的变化。 模式的角色:Abstraction:定义抽象类的接口,维护一个指向Implementor类型对象的指针,将Client端的请求转发给它的Implementor RefinedAbstraction:扩充有Adstraction定义的接口。 Implementor:定义实现类的接口,该接口不一定要与Abstra原创 2015-01-02 16:15:01 · 387 阅读 · 0 评论 -
结构型模式之适配器模式(Adapter)
适配器模式(Adapter): 将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作了,其别名为包装器(wrapper)。通俗的讲,就是原来两个不兼容的两个功能代码,通过中间代码相结合。 适配器模式包括: 目标角色Target(类或者接口):定义Client使用的与特定领域相关的接口。 Client:与符合T原创 2014-12-31 10:08:44 · 399 阅读 · 0 评论 -
结构型模式之代理模式(Proxy)
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。也可以理解为:去除无须了解的服务,实现客户与目标对象之间的关联。 代理模式结构: 抽象主题角色(Subject):声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都可以用代理主题代替。 代理主题角色(ProxySubject):含有真实主题的引用,从而可以在任何时候操作真实主题对象,并提供一个与Subj原创 2015-01-19 14:29:05 · 366 阅读 · 0 评论 -
结构型模式之享元模式(FlyWeight)
享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。可以理解为:当细粒度对象的数量过多时运行的代价相当高,此时运用共享技术科大大的降低运行的代价。 享元模式分为单纯享元模式和复合享元模式: 单纯享元模式 抽象享元角色(Flyweight):为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入,可以是抽象类或接口。 具体享元角色(ConcreteF原创 2015-01-19 10:54:59 · 386 阅读 · 0 评论 -
单例模式
单例模式 在设计模式中最负盛名的一个模式,定义为:确保一个类中只有一个实例,并且自行实例化并向整个系统提供这个实例。它的意图是为了一个类有且仅有 这个实例,并为它提供了一个全局访问点。 单例模式分为饿汉模式和懒汉模式 共同点: 在类创建的同时就已经创建好一个静态对象供系统使用,并且以后不会在改变。 不同点: 饿汉模式---线程安全原创 2014-12-10 09:41:41 · 332 阅读 · 0 评论 -
结构型模式之门面模式(Facade)
门面模式(Facade):又称外观模式,其定义为:“外部与一个子系统的通信必须通过一个统一的门面对象进行”。其实可以理解为“一个子系统,只能对应一个具有单个实例的门面 类”。当然一个由多个子系统构成的大系统,可以有多个门面类; 门面模式结构: 门面角色(Facade):客户端可以调用这个角色的方法,原创 2015-01-13 09:23:31 · 352 阅读 · 0 评论 -
结构型模式之装饰模式(Decorator)
装饰模式(Decorator):也叫包装器,GOF把装饰模式定义为:动态的给对象增加一些额外的职责。可以理解为保持原有的功能不变并进行拓展。 装饰器结构: Component:定义一个对象接口,可以动态的给这些对象增加职责。 ConcreteComponent:定义一个对象,可以给这个对象增加一些职责; Decorator:维持一个指向Component对象的指针,并定义一个与Co原创 2015-01-09 10:28:09 · 381 阅读 · 0 评论 -
迪米特法则(Low of Demeter)
迪米特法则(Low of Demeter) 又叫做最少知识原则(Least Knowledge Principle,LKP)它是指一个对象应当对其他的对象有尽可能少的了解,不必与不认识的人直接联系。要求每个方法只能给有限的对象发送消息。包括参数,(this)伪对象和this的直接子对象。 狭义:如果两个类不直接通信,那么这两个类就不应该发生直接的相互作用,如果一个类想要调用另一个类的方原创 2014-12-04 09:42:27 · 1162 阅读 · 0 评论 -
结构型模式之组合模式(composite)
组合模式(composite):又称合成模式,将对象那个组合成树状结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合结构: Component:为组合中对象声明的接口,在适当的情况下,实现类所有接口的缺省行为,声明一个接口用于访问和管理Component的子组件,在递归结构 中定义一个接口,用于访问一个父部件并在合适原创 2015-01-08 15:02:52 · 367 阅读 · 0 评论 -
依赖倒换原则(Dependence Inversion Principle,DIP)
依赖倒换原则(Dependence Inversion Principle,DIP) 两种定义: 一,“高层模块不应该依赖于底层模块,二者都应该依赖于抽象,抽象不应该依赖于细节, 细节应该依赖于抽象。”简而言之,在设计系统时,应该用抽象来分析,而不是细节。 二,“要针对接口编程,不要针对实现编程”,就是运用DIP时,通过接口与抽象类进行各种变量、参数、方法等声明。并且,禁止实现类去做这些声明原创 2014-12-02 09:27:22 · 684 阅读 · 0 评论 -
接口隔离原则(Interface Segregation Principle,ISP)
接口隔离原则(Interface Segregation Principle,ISP) 定义一、不应该强迫用户依赖他们不用的方法; 定义二、一个类对另一个类的依赖应该建立在最小的接口上。 它们体现的意思是一致的,说的都是定义接口的表达要准确,不要创建多余的方法。 作用:减少项目工程中的代码冗余,(通常在有些项目定义的大接口,里面放置许多不用的方法,导致在原创 2014-12-02 11:36:31 · 738 阅读 · 0 评论 -
里氏替换原则(Liskov Substitution Principle, LSP)
里氏替换原则(Liskov Substitution Principle, LSP) 子类型必须能够替换它们的父类型。 分析: 继承是面向对象思想中的一个重要特性。 优势: 可以减少重复代码,从而实现代码的可重用性。 子类与父类,可以相似,也可以有它们各自不同的地方。 父类,可以提高代码的开放度。 问题: 父类方法与属性变化时,子类也会原创 2014-11-28 10:14:24 · 525 阅读 · 0 评论 -
单一职责原则(single responsibility principle,SRP)
单一职责原则(single responsibility principle,SRP): 是指“就一个类而言,应该只有一个引起它变化的原因”。符合“高内聚低耦合”的标准。 分析: 1)防止相同类型的职责,分离到不同的类中,即我们需要提高代码的可重用性。 2)同一个类无需编织多余的职责,即做事专一,符合中华民族的“从一而终”的传统美德。 优势:原创 2014-11-28 09:05:43 · 477 阅读 · 0 评论 -
创建型模式之建造者模式(Builder)
建造者模式: 将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。“复杂对象的构建和它的表示分离”可以理解为一台电脑,无论使用 任何品牌的零部件,只要能正常安装即可,“同样的构建过程可以创建不同的表示。”可以理解为同样的部件可采取多种安装方式。 建造者模式由以下4个部件构成: Builder(抽象构原创 2014-12-16 08:41:56 · 571 阅读 · 0 评论