




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工厂系列模式的优缺点:1. 让用户的代码和某个特定类的子类的代码解耦用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法2. 抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦MVC模式是不是一种设计模式?为什么 MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。举出一个生活中使用装饰者模式的例子,用程序实现思路举个生活中的例子,俗话说“人在衣着马在鞍”,把这就话用装饰者模式的语境翻译一下,“人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;”。对应 上面的类
2、图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorator;设计模式如何分类,每一个类别都有什么特征?设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。创建型特点:避免用户直接使用new运算符创建对象。行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职结构型特点:主要用于处理类或对象的组合Java jdk中使用了哪些设计模式1.单例2.静态工厂3.工厂方法4.抽象工厂5.构造者6.原型7.适配器8桥接9.组合10.装饰器11.外观12.享元14.代理15.迭代器16.观察者17.协调者18.模板方法19.策略20.
3、责任链21.命令22.空对象25.解释器面向对象的设计原则有哪些?开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚-低耦合原则。观察者模式的推拉有什么不同?使用场景推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者需要这些变换后的数据时,往往采用推数据方式;拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景:当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式。策略模式和工厂模式有什么不同?策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换;工厂模式定义一个创建对象的接口,让子类决
4、定实例化哪一个类5观察者模式的推拉有什么不同?适用场景 现在要说的分歧在这里:“推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。“拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。 “推”的好处包括:1、高效。如果没有更新发生,不会有任何更新消息推送的动作,即每次消息推送都发生在确确实实的更新事件之后,都是有意义的。2、实时。事件发生后的第一时间即可触发通知操作。3、可以由Subject确立通知的时间,可以避开一些繁忙时间。4、可以表达出
5、不同事件发生的先后顺序。 缺点:精确性较差,不能保证能把信息送到客户器。“拉”的好处包括:1、如果观察者众多,Subject来维护订阅者的列表,可能困难,或者臃肿,把订阅关系解脱到Observer去完成。2、Observer可以不理会它不关心的变更事件,只需要去获取自己感兴趣的事件即可。3、Observer可以自行决定获取更新事件的时间。4、拉的形式可以让Subject更好地控制各个Observer每次查询更新的访问权限。缺点:不能够及时获取系统的变更。6策略模式和工厂模式有什么不同?一般情况下,策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间
6、可以相互替换,策略模式让策略的变化独立于使用策略的客户。可以应用的场景有优惠系统、工资计算系统等。而工厂模式主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。很明显的是策略模式是开放的,作为一个主体你的活动范围是全程的,大多数事情要你自己亲力亲为。而工厂模式作是封闭的,作为主体的你的活动范围是有限的,很多事情都帮组你做好了,你直接“点”就可以了。7装饰者模式和适配器模式的比较1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模式主要是给被装饰者增加新职责的。2.关于原接口:适配器模式是用新接口
7、来调用原接口,原接口对新系统是不可见或者说不可用的。装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完成使用。(增加新接口的装饰者模式可以认为是其变种-“半透明”装饰者)3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或那个接口)。装饰者只知道其接口是什么,至于其具体类型(是基类还是其他派生类)只有在运行期间才知道。8为什么要用设计模式,设计模式有哪些优点设计模式的优点:1、设计模式融合了众多专家的经验,并以标准的形式给广大群众使用,她提供了一中通用的设计词汇,和一种通用的设计语言,以方便开发人员之间开发和交流,使得设计方案更加通俗易懂;2、设计模式使人们可以方
8、便简单的复用设计模式;3、设计模式是设计方案易于修改;4、设计模式的使用将提高软件开发效率与质量,节约成本;5、设计模式有助于初学者理解面向对象的思想。9学过的每一种模式的适用场景和优缺点职责链模式优点:1. 将请求的发送者和接收者解耦2. 可以简化你的对象,因为它不需要知道链的结构3. 通过改变链内的成员或调动他们的次序,允许你动态地新增或删除责任缺点:1. 并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能会落到链尾端之外2. 可能不容观察运行时的特征,有碍于除错。用途:经常被使用在窗口系统中,处理鼠标和键盘之类的事件。当算法牵涉到一种链型运算,而且不希望处理过程中有过多的循环和
9、条件选择语句,并且希望比较容易的扩充文法,可以采用职责链模式。1)有多个对象处理请求,到底怎么处理在运行时确定。2)希望在不明确指定接收者的情况下,向多个对象中的一个提交请求。3)可处理一个请求的对象集合应该被动态指定。典型例子:一个请求发送给前台,前台表示我无权管理,将请求传递给财务部门,财务部门再简单工厂模式优点:工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的明确了各自的职责和权利,有利于整个软件体
10、系结构的优化。缺点:由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;用途:工厂类负责创建的对象比较少;客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。经典例子:没啥好说的,这不是一个真正的设计模式策略模
11、式优点:1. 提供了一种替代继承的方法,而且保持了继承的优点,比继承更独立(算法独立,可以任意扩展)2. 避免程序使用多重条件转移语句,使系统更灵活,并易于扩展3. 遵守大部分常用设计原则,高内聚,低耦合缺点:1. 每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。可以使用工厂方法来解决。用途:各个不同地区不同的纳税方法,HF中不同鸭子的方法。有多种鸭子,每个鸭子都有自己的行为,fly,quaak之类的。行为有行为类,继承同一接口实现不同操作,以此实现算法互换。装饰模式优点:1. 装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。2. 通过使
12、用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。3. 有着比继承更加灵活的特性缺点:由于使用装饰模式,可以比使用继承关系需要较少数目的类。使用较少的类,当然使设计比较易于进行。但是,在另一方面,使用装饰模式会产生比使用继承关系更多的对象。更多的对象会使得查错变得困难,特别是这些对象看上去都很相像。用途:当需要给一个类添加新的行为的时候,但基于开闭原则,就使用装饰模式。经典例子:我穿衣服使用draw()方法,在我穿好衣服后,我还打算再寄领带,而寄领带就是装饰类,我们可以把装饰类和对象(穿衣服类)继承于同一个接口,在装饰类的draw()方法中调用super.draw
13、(),然后再在这个方法里加上自己的特征。工厂方法模式优点:1. 良好的封装性,代码结构清晰。一个对象创建是有条件约束的,如一个调用者需要一个具体的产品对象,只要知道这个产品的类名(或约束字符串)就可以了,不用知道创建对象的艰辛过程,减少模块间的耦合。2. 工厂方法模式的扩展性非常优秀。在增加产品类的情况下,只要适当地修改具体的工厂类或扩展一个工厂类,就可以完成“拥抱变化”。例如在我们的例子中,需要增加一个棕色人种,则只需要增加一个BrownHuman类,工厂类不用任何修改就可完成系统扩展。3. 屏蔽产品类。这一特点非常重要,产品类的实现如何变化,调用者都不需要关心,它只需要关心产品的接口,只要
14、接口保持不表,系统中的上层模块就不要发生变化,因为产品类的实例化工作是由工厂类负责,一个产品对象具体由哪一个产品生成是由工厂类决定的。在数据库开发中,大家应该能够深刻体会到工厂方法模式的好处:如果使用JDBC连接数据库,数据库从MySql切换到Oracle,需要改动地方就是切换一下驱动名称(前提条件是SQL语句是标准语句),其他的都不需要修改,这是工厂方法模式灵活性的一个直接案例。4. 工厂方法模式是典型的解耦框架。高层模块值需要知道产品的抽象类,其他的实现类都不用关心,符合迪米特原则,我不需要的就不要去交流;也符合依赖倒转原则,只依赖产品类的抽象;当然也符合里氏替换原则,使用产品子类替换产品
15、父类,没问题!缺点:待补充用途:第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。典型例子:车子继承vehicle(车)类,有小汽车卡,公交车bus等,车子工厂实现工厂接口,工厂接口有抽象方法vehicle produce vehicle(Strin
16、g type)方法,车子工厂中实现工厂方法vehicle produce vehicle(String Type),方法中根据需要new新的车子。观察者模式优点:1. 观察者和被观察者之间是松耦合的,分别可以各自独立改变。2. Subject在发送广播通知的时候,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知。3. 遵守大部分GRASP原则和常用设计原则,高内聚、低耦合。缺点:1. 松耦合导致代码关系不明显,有时可能难以理解。2. 如果一个对象被大量观察者订阅的话,在广播通知的时候可能会有效率问题。(毕竟只是简单的遍历)使用场景1、 对一
17、个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。2、 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。经典例子:看电视,天气预报看新闻联播,观众们是观察者,新闻联播是对象,每个观察者都继承于一个统一的接口。而被观察的对象是新闻联播,新闻联播可以添加新的观察者,或者当移除观察者(关电视不看),新闻联播对象有个通知用户信息变更方法,当达到某种条件是,新闻联播对象会将信息都通知给观察者。抽象工厂模式优点:1. 抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建2. 当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象
18、3. 增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。用途:1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。2、系统中有多于一个的产品族,而每次只使用其中某一产品族。3、属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。经典例子:抽象工厂在我的理解就是抽象工厂有两个或两个个以上的工厂方法模式结合,有一个工厂接口类,这个
19、接口有中的产品家族有发动机和轮胎两个产品。有两个具体工厂,米其林工厂和倍耐力工厂实现了抽象工厂。米其林工厂生产的轮胎都继承于米其林轮胎,同理米其林发动机和倍耐力产品。适配器模式优点:1. 将目标类和适配者类解耦2. 增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性3. 灵活性和扩展性都非常好,符合开闭原则缺点:一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。用途:想使用一个已经存在的类,但如果它的接口和你的要求不相同时。可以使用适配器模式。两个类所做
20、的事情相同或相似,但接口不同时可以使用。经典例子:不同牌子电视机和不同牌子遥控器,里皮翻译用汉语布置恒大队员战术,不同牌子手机的软件。球员都继承于中国人,都会说汉语,而里皮并不会说汉语。在不知战术的时候,我们需要给里皮一个翻译,这个翻译就是里皮的适配器。翻译可以和球员一样,也继承于中国人,也有说汉语这个方法。而翻译认识里皮,翻译在说汉语()这个方法的时候,实际上是在说里面用意大利语的内容。单例模式优点:1. 实例控制,单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。2. 灵活性,因为类控制了实例化过程,所以类可以灵活更改实例化过程。缺点:1. 可能的开发混淆
21、,使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new 关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。2. 不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C+),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。用途:系统只需要一个实例的对象,而这个对象又会被经常创建。典型例子:数据库类里的Model,例如User,表单中显示用户信息会经常使用User.Update之类的方法
22、,此时使用单例模式可以节省效率。题号题目ABCD正确答案1抽象方法: ( )可以有方法体可以出现在非抽象类中是没有方法体的方法抽象类中的方法都是抽象方法 C2设计模式的两大主题是( )。系统的维护与开发对象组合与类的继承系统架构与系统开发系统复用与系统扩展 D3要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 开-闭原则依赖倒转原则组合优于继承原则继承优于组合原则B4对于模式的表述错误的是( ) 模式其实就是解决某一类问题的方法论。 把解决某类问题的方法总结归纳到理论高度,那就是模式。 模式对问题的描述以及对问题的解答应具有高度的抽象性和代表性。模式只是一个模型D
23、5设计模式具有的优点()。 选出最合适的一项。适应需求变化 程序易于理解 减少开发过程中的代码开发工作量简化软件系统的设计 A6Design pattern is to program as:Metal is to car Park is to tree Blueprint is to buildingMountain Dew is to sodaC7对继承层次太深可能导致的问题的叙述不正确的是()。 继承层次太深导致紧内聚继承层次太深导致弱内聚继承层次太深导致紧耦合继承层次太深会产生冗余,并使测试困难A8在观察者模式中,表述错误的是( )观察者
24、角色的更新是被动的。被观察者可以通知观察者进行更新观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。以上表述全部错误。C9在Java中,下列关于方法重载的说法中错误的是( )。 方法重载要求方法名称必须相同 重载方法的参数列表必须不一致 重载方法的返回类型必须一致一个方法在所属的类中只能被重载一次 D10对观察者模式,以下叙述不正确的是()。必须找出所有希望获得通知的对象。 所有的观察者对象有相同的接口。如果观察者的类型相同,目标就可以轻易地通知它们。在大多数情况下,观察者负责了解自己观察的是什么,目标需要知道有哪些观察者依赖自己。 A11关于模式适用性,在以下情
25、况不适合使用CHAIN OF RESPONSIBILITY(职责链) 模式? 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。在需要用比较通用和复杂的对象指针代替简单的指针的时候你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。可处理一个请求的对象集合应被动态指定。B12关于接口哪个正确? ( ) 实现一个接口必须实现接口的所有方法一个类只能实现一个接口接口间不能有继承关系 接口和抽象类是同一回事 A13Sun公司在设计java.io包中的类时使用了()模式。装饰策略观察者模式责任链模式A14关于Java中的静态,下列说法错误的是()。如果某些操作不依赖具体实例
26、,那它就是静态的。静态方法与类相关,与对象无关需要创建一个对象来调用静态方法静态方法是使用公共内存空间的C15对象适配器模式是( )原则的典型应用。合成聚合复用原则依赖倒转原则接口回调单一职责A16如果在一个系统里面有许多类,它们之间的区别仅在于它们之间的行为,那么使用()模式可以动态地让一个对象在许多行为中选择一种行为。 装饰者模式观察者模式策略模式以上都不对C17以下对"开-闭"原则的一些描述错误的是?"开-闭"原则与"对可变性的封装原则"没有相似性. 找到一个系统的可变元素,将它封装起来,叫"开-闭"原则对修
27、改关闭: 是其原则之一从抽象层导出一个或多个新的具体类可以改变系统的行为,是其原则之一 A18Adapter(适配器)模式的意图是( )。希望简化现有系统的使用方法。你需要定义自己的接口将一个无法控制的现有对象与一个特定接口相匹配 将一组实现部分从另一组使用它们的对象中分离出来你需要为特定的客户(或情况)提供特定系列的对象B19保证一个类仅有一个实例,并提供一个访问它的全局访问点。这句话是对下列哪种模式 的描述( )。StrategiesAdapterSingletonDecoratorC20下列关于开闭原则说法错误的是()。将可变的元素封装起来,防止改变扩散到整个应用通过扩展已有的软件系统,
28、可以提供新的行为,以满足对软件的新需求,使变化 中的软件系统有一定的适应性和灵活性。 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件 系统有一定的稳定性和延续性。最好将多个可变性都封装到一个抽象类或接口中D21网站开发中的过滤器属于()模式。策略装饰者观察者责任链D22关于抽象工厂模式,以下叙述不正确的是( ) 客户对象不需要知道向谁请求所需的对象和如何使用这些对象抽象工厂类通过为每个不同类型的对象定义一个方法,来指定实例化哪个对象具体工厂对象负责指定哪些对象要实例化将抽象工厂模式和适配器模式结合在一起,可以将概念相似的对象当作同种对象处理 A23Which of th
29、e following programming languages is best suited to design patterns? Java C HTML XMLA24在职责链模式里,很多对象由每一个对象对其()对象的引用而连接起来形成一条链。下家 上家 周围自身A25系统中的文本显示类(TextView)和图片显示类(PictureView)都继 承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚 动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件 和图片显示控件,但希望最多只增加三个类,() 设计模式可以实现该目的。 外观装饰单件模板方法B26面
30、向对象系统中的“黑盒复用”是指( )。类继承 封装对象组合关联 C27Decorator模式的描述正确的是( )。 该模式的意图是动态地给一个对象添加一些额外的职责。就增加功能来说,该模式相比生成子类不够灵活。 适用于在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 该模式的意图是将对象组合成树形结构以表示“部分-整体”的层次结构。该模式使得用户对单个对象和组合对象的使用具有一致性。 该模式适用性是你想表示对象的部分-整体层次结构。B28java.util包中的Observable类相当于观察者模式中的()。主题接口具体主题观察者接口具体观察者A29Java的异常处理机制可理解
31、为哪一种设计模式 。 观察者(Observer)模式 职责链(Chain of Responsibility)模式策略(Strategy)模式 装饰者(Decorator)模式B30如果我们的课程改变时间或地点, 就应该通知所有选修了这门课程的同学。这样的问题最好用什么模式来解决? 工厂模式适配器模式桥接模式观察者模式D31对象组合是通过获得( )而在运行时刻动态定义的。对象对其它对象的引用继承构造函数B32观察者模式有时被称作( )。发布/订阅模式油漆工模式MVC模式以上都对A33以下意图那个是用来描述CHAIN OF RESPONSIBILITY(职责链)?为子系统中的一组接口提供一个一致
32、的界面,本模式定义了一个高层接口,这个接 口使得这一子系统更加容易使用。提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。D34以下哪一个模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理()。策略模式模版方法模式解释器模式迭代器模式 A35以下关于继承的叙述正确的是( )。在Java中类只允许单一继承 在Java中一个类只能实现一个接口在Java中一个类不
33、能同时继承一个类和实现一个接口子类将继承父类所有的属性和方法。A36设计模式的原理?面对实现编程 面向对象编程面向接口编程面向组合编程C37策略模式不包括哪种角色()环境类抽象策略类 具体策略类抽象命令类D38A design pattern is:an algorithm used in object-oriented programminga data structure used in object-oriented programming a solution to a common problem in object-oriented programming a blueprint
34、for a particular kind of class C39( )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界 只能通过有限的接口与对象发生联系。多态性继承 封装 消息C40以下关于策略模式叙述错误的是( )。策略模式是对算法的包装,是把算法的责任和算法本身分隔开,委派给不同的对象管理 在Context类中,维护了对各个ConcreteStrategy的引用实例,提供了一个接口供ConcreteStrategy存储数据 策略模式让算法独立于使用它的客户而变化 策略模式中,定义一系列算法,并将每一个算法封装起来,并让它们可以相互替换 B41下列关于构
35、造方法的叙述中,错误的是 ( ) Java语言规定构造方法名与类名必须相同 Java语言规定构造方法没有返回值,但不用void声明Java语言规定构造方法不可以重载Java语言规定构造方法只能通过new自动调用C42JAVA中如何实现多重继承()。继承接口重载覆盖 B43关于继承表述错误的是:( )继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展。 破坏了封装性,因为这会将父类的实现细节暴露给子类。继承本质上是“白盒复用”,对父类的修改,不会影响到子类。 D44关于模式适用性,在以下情况不适合使用DECORATOR(装饰)模式?在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 处理那些可以撤消的职责。客户程序与抽象类的实现部分之间存在着很大的依赖性。当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持 每一种组合将产生大量的子类,使得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽省合肥四十二中中考物理一模试卷(含解析)
- 浙江省余杭区普通高中第二共同体2024-2025学年高考最后冲刺模拟(一)英语试题含解析
- 华南农业大学珠江学院《食品研发专题》2023-2024学年第二学期期末试卷
- 湖北省孝感市孝南区十校联谊2025年第二学期初三教学质量检测试题生物试题试卷含解析
- 山东省邹平县黄山中学2025年高三年级4月联考数学试题含解析
- 拉萨市堆龙德庆县2024-2025学年数学四年级第二学期期末学业质量监测试题含解析
- 辽宁地质工程职业学院《建筑给排水工程》2023-2024学年第二学期期末试卷
- 河南艺术职业学院《印度文化遗产赏析》2023-2024学年第一学期期末试卷
- 四川省遂宁市安居育才中学2024-2025学年初三5月考前适应性考试英语试题试卷含答案
- 周口理工职业学院《自然科学基础(4)》2023-2024学年第一学期期末试卷
- 固体表面的吸附
- (正式版)JBT 14581-2024 阀门用弹簧蓄能密封圈
- 医疗器械销售公司介绍
- (2024年)传染病培训课件
- 《中外学前教育史》课件-俄罗斯的学前教育
- 2023年山东高考政治试卷附答案
- 2023年中考地理会考模拟试卷(含答案)
- 胰腺癌一病一品
- 智能化浓缩机控制系统开发
- 第7课《提高警惕防拐骗》课件
- 刑事案件侦查程序中的监督与纠正措施
评论
0/150
提交评论