文件名称:
《Java设计模式》课后习题参考答案-刘伟(20180723).pdf
开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-07-01
详细说明:《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最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.