您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 《Java设计模式》课后习题参考答案-刘伟(20180723).pdf
  所属分类: Java
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-07-01
  提 供 者: csdn_******
 详细说明:《Java设计模式》课后习题参考答案-刘伟(20180723),pdf版本java. lang Character#value Of(char) (7)代理模式( Proxy) java. lang reflect Proxy 行为型模式: (1)职责链模式( Chain of responsibility) javautil.logging. Loggcr#logo javax. servlet Filter#do filter (2)命令模式( Command) Javax. swing Action 3)解释器模式( Interpreter javautil. Pattern java. text. Normalizer Java. text上 ormat javax. el. ELResolver (4)迭代器模式( Iterator) javautil. Enumeration (5)中介者模式( Mediator) ava. util.Timer(所有 schedule XXX(方法) java util. concurrent. ExecutortexecuteO javautil.concurrent上 xecutor Service( invokeXXXo)和 submitt0方法) ava.util. concurrent. ScheduledExecutor Service(所有 schedulexxXo方法) java.lang reflect Method#invoke (6)备忘录模式( Memento) util. dat java1o. Serializable javax. faces component. StateHolder (7)观察者模式( Observer ava.util. Observer/java util. Observable java util. Eventlistener(所有子类) javax.servlet.httpHttpSessionBindinglistener javax.servlethttpHttpSessionattributelistenEr avax faces. event Phaselistener (8)状态模式(Sate) java util.Iterator javax. faces lifecycle. Life Cycle#execute 9)策略模式( Strategy) java util. Comparator#comparcO javax.servlet.httpHttpServlet javax. servlet Filter doFiltero (10)模板方法模式( Template Method) Java.10. InputStream, Java.10. OutputStream, Java. 10. Reader和java.io. Writer的所有非抽象 方法 java util. AbstractList, java util. AbstractSet和 java util. AbstractMap的所有非抽象方法 javax.servlet.httpHitpservlet#doxxxo (11)访问者模式( Visitor javax. lang. model element Annotation Value FW Annotation Value Visitor javax. lang model element. Element *A Element Visitor javax. lang. model type. TypeMirror FA TypeVisitor 参见:hp:/ww.leye:com/news/18725和hup:/stackoverflow.com/questions/1673841/′ cxamplcs-of-gof-dcsign-pattcrns 第2章面向对象设计原则 BACDDC 3.D 4.D 5.“封装变化点¨可对应“开闭原则”,对接口进行编程”可对应“依赖倒转原则”,“多使用组合, 而不是继承”可对应“合成复用原则”。 6.类的粒度需满足单一职责原则,接∏的粒度需满足接冂隔离原则。 7.在面向对象设计中,正方形不能作为长方形的子类,具体分析过程如下: class Rectangle∥长方形 private double width private double height; public rectangle(double width, double height) this, widthwidth ght-height public double getHleighto return height public void setHeight( double height heigh public double get Width return width public void setWidth ( double width) this width= width class squarc extends rectangle/正方形 public Square( double e,size); public void setHeight(double height uper. setheight(height super set Width(height) public void set Width(double width) tHeight( width) super set Width( width) class Client public static void main( String args) Rectangle; r=new Square(0.0); r set Width (5.0) r set Width(10.00) double area- calculate Area(r) if(50.00--area) System. out. println("这是长方形或长方形的子类!") else System. out printIn("这不是长方形!"); public static double calculate Area(Rectangle r) return r.getHeightO *r get Width 5 由代码输出可以得知,我们在客户端代码中使用长方形类来定义正方形对象,将输出“这 不是长方形!”,即将正方形作为长方形的子类,在使用正方形替换长方形之后正方形已经 不再是长方形,接受基类对象的地方接受了类对象时山现问题,這反了里氏代换原则,因此 从面向对象的角度分析,正方形不是长方形的子类,它们都可以作为四边形类的」类。关于 该问题的进一步讨论,大家可以参考其他相关资料,如 Bertrand mever的基于契约设计 Design By Contract),在长方形的契约( ontrac中,长方形的长和宽是可以独立变化的,但 是正方形破坏了该契约。 8.重构方案如下所示 Pen Colo color: Color setColor(color color): void △人△ SmallPen MiddleMen Large Pen Black Red 在本重构方案中,将笔的大小和颜色设计为两个继承结构,两者可以独立变化,根据依 赖倒转原则,建立一个抽象的关联关系,将颜色对象注入到画笔中;冉根据合成复用原川 画笔在保持原有方法的同时还可以调用颜色类的方法,保持原有性质不变。如果需要增加- 种新的画笔或增加一种新的颜色,只需对应增加一个具体类即可,且各户端可以针对高层类 Pen和 Color编程,在运行时再注入具体的子关对象,系统具有良好的可扩展性,满足开闭 原则。(注:本重构方案即为桥接模式) 第3章简单工厂模式 3.A 4.参考类图如卜: Person ato sleep o vwa Man Woman make Person(char arg): Person eat: void eat():void+eat() sleep):void+sleep:void epo: void 其中,Nwwa类充当工厂类,其中定义了工厂方法 makeperson(, Person类充当抽象产 品类,Man、 Woman和 Robot充当具体产品类。 5.参老类图如下 L Unsupported Shape Exception Shape Unsupported shape Exception( draw o String message erase: void ShapeFactory Circle Rectangle Triangle t create Shape(String type): Shape draw(: void draw: void+ draw():void erase(: void erase(): void+ erase():void 其中, Shape接口充当抽象产品,其子类 Circle、 Rectangle和 Triangle等充当具体产品, ShapeFactory充当工厂类。 第4章工厂方法模式 B 2.D 3.AB 4.参考类图如下所示: CarFactory produce car: Car run(:void BMFactory BenzFactory BMW B +produceCar(:Car produce car(: Car +run():void run():void 其中,Car充当抽象产品,其子类BMW和Benz充当具体产品; CarFactory充当抽象工 ,其子类 BMWFactory和 BenzFactory充当具体工厂。 5.抽象类接口 Chart充当抽象产品,其子类 Line chart和 Barchart充当具体产品;抽象类/ 接口 ChartFactory充当抽象工厂,其子类 Line ChartFactory和 BarChartFactory充当具体工厂。 6.抽象类/接口 Convertor充当抽象产品,其子类 TXTConvertor、 DBConyertor和 ExcelConvertor充当具体产品:抽象类/接口 Convertor creator充当抽象工厂,其子类 TXTConvertor Creator、 DBConvertorCreator和 ExcelConvertor Creator充当具体工厂。 参考类图如下 7 o- Convertor Creator Convertor getconvertor O transform DBConvertor Creator TXTConvertorCreator DBConvertor TXTConvertor getconvertor o getConvertor0 transform o transform( 7.参考类图如下: ImageReaderFactory ImageReader createlmageReader (: Image Reader read Image (: void GifReader UpgRader createImage Reader(: ImageReader dImage o: void ≤ create>> GifReader Factory createlmageReader o: ImageReader <> 其中, ImageReaderFactory充当抽象工厂, GifReaderFactory和 JpgReaderFactory充当具 体工厂, ImageReader充当抽象产品, Gifreader和 UpgRader充当貝体产品。 第5章抽象工厂模式 1.D 2.D 3.A 4.参考类图如下所示: EFactory elevision duce Television play():void produceAirConditioner(): AirConditioner HaierTelevision TCLTelevision t produce Television Television t play (: void play (: void produce Ar Conditioner (: AirConditioner AirConditioner TCLFactory roduceTelevision o Television produceAir Conditioner ( AirConditioner HairAir Conditioner TCLAirConditioner changeTemperature (: void t changeTemperature(: void 8 其中, EFactory充当抽象工厂, HaierFactory和 TCLFactory充当具体工厂, Television 和 AirConditioner充当抽象产品, Haier television、 TCLTelevision、 Haier airConditioner和 TCLAirConditioner充当具体产品。 5.参考类图如下所示 DBFactory - Connection t create Connection(: Connection connect():vaid create Statement (: Statement Oracle Connection OracleFactory MySQLConnection t connect () void +connect (: void creato Connection 0: Connection create Statement (): Statement Statement My SQLFactory execute Statement (: void create Connection (: Connection create Statement o: Statement Oracle statement MySQLStateme execute Statement (: void execute Statement(: void 其中,接∏ DBFactory充当抽象⊥厂,其了类 OracleFactory和 MySQLFactory允当具体 工厂,接口 Connection和 Statement充当抽象产品,其子类 Oracleconnection、 MySQLConnection和 Oracle statement、 MySQLStatement充当具体产品 6.参考类图如下所示: Abstract Factory Operation Controller getOperation Controller ( Symbian Factory AndroidFactory SymbianOperation ControllerAndroidOperationController getoperation Controller( oler o) getlnterface Controller o getInterface Controller O Interface Controller Symbianlnterface ControllerAndroid InterfaceController 其中,接口 AbstractFactory充当抽象工厂,其子类 Symbian Factory和 Androidfactor 充当具体工厂; Operation controller和 InterfaceController充当抽象产品,其子类 Symbian Operation Controller AndroidOperation Controller SymbianInterface Controller *I AndroidInterface controller充当具体产品 参考类图如下所示 AbstractFacto Windows Facto UnixFactoryl LinuxFactor Windows Text UnixTextLinuxText Windows Button Unix ButtonLinuxButton Text Button 其中,接口 AbstractFactory充当抽象工厂,其子类 WindowsFactory、Uniⅸ Factory和 Linux Factory充当具体工厂;Text和 Button充当抽象产品,其子类 Windowstext、 Unix Text、 Linux text和 Windows Button、 Unix Button、 Linux Button充当具体产品 第6章建造者模式 L D 2.C 3.D 4.参考类图如下所示:
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: