软件设计师_结构化开发——设计模式(下午题第六题——更新中)

抽象工厂模式

12年下半

image-20221022135948642

image-20221022135811244

image-20221022140701890

image-20221022143000295

解析:(1):public void Insert(Department department)
看 IDepartment的子类SqlserverDepartment和AccessDepartment里面的方法,都是继承了接口中的方法,所以接口里面要写方法;

(2):public Department GetDepartment(int id)
同(1);

(3):implements IDepartment
看图可知SqlserverDepartment是接口IDepartment的子类,所以要继承接口;

(4):implements IDepartment
同(3);

(5):interface IFactory
看类图中除了IDepartment接口,还有一个IFactory接口,后面的SqlServerFactory类与AccessFactory类都继承了IFactory接口;

(6):public IDepartment CreateDepartment( )
SqlServerFactory类与AccessFactory类中的方法是IFactory中的方法,这里要把这个方法写到接口中;

生成器模式

18年上半

image-20221022145058889

image-20221022145130198

image-20221022145202092

image-20221022145235508

解析:(1):abstract void buildParts( )
代码中HawaiianPizzaBuilder类和SpicyPizzaBuilder类是继承了PizzaBuilder类,这两个类中的buildParts方法是是继承了PizzaBuilder类中的方法。
为什么要用抽象方法呢,因为每个子类重写的buildParts都不同。

(2):this.pizzaBuilder=pizzaBuilder
构建生成器,局部变量自己赋值给自己,意思就是Waiter类中setPizzaBuilder方法中的pizzaBuilder等于参数中的pizzaBuilder;

(3):pizzaBuilder.buildParts( )
上一步代码pizzaBuilder.creatNewPizza( ),pizza生成器调用构建newPizza的方法,先实例化,但是要构建什么种类的pizza,还不知道,下一步就要调用构建pizza种类的方法;

(4):waiter.setPizzaBuilder(hawaiian_pizzabuilder)
FastFoodOrdering类看意思就是食物订单,这个类要完成点单的过程,第一步Waiter(用户)创建了waiter对象,第二部pizzaBuilder生成器创建了hawaiian_pizzabuilder对象,说明用户要点hawaiian_pizza,waiter先构建setPizzaBuilder生成器;

(5):waiter.construct( )
构建完setPizzaBuilder生成器以后,就要构建pizza了,所以调用construct方法构建pizza;

原型模式

13年上半

image-20221022161236738

image-20221022161258108

image-20221022161442165

解析:(1):implements
继承接口;

(2):WorkExperience obj=new WorkExperience( )
创建obj对象,obj对象调用了WorkExperience类的实体,所以是用本类创建对象;

(3):implements
继承接口;

(4):(WorkExperience)work.Clone( )

(5):new Resume (this.work)

(6):(Resume) a.Clone

适配器模式

16年上半

image-20221022183716955

image-20221022183736502

image-20221022183840666

解析图:第(1)问

image-20221022213337532

解析图:第(5)问

image-20221022214049502

解析:(1):Address address
定义Address类型的变量address;

(2):address.street( )
重写父类DutchAddress类中的street方法;

(3):address.zip( )
重写父类DutchAddress类中的zip方法;

(4):address.city( )
重写父类DutchAddress类中的city方法;

(5):DutchAddress addrAdapter
定义DutchAddress类型的变量addrAdapter;

桥接模式

17年下半

image-20221022214243867

image-20221022214300852

image-20221022214332697

image-20221022214348846

解析图:第(1)问

image-20221022221231464

解析图:第(2)问

image-20221022222427044

解析图:第(3)、(4)、(5)问

image-20221022223517330

解析:(1):abstract void doPaint(Matrix m)
看子类中的方法,并查看是否是抽象类;

(2):imp.doPaint(m)
显示像素矩阵方法是在Implementor类中的doPaint方法而在上面Implementor创建了imp对象,所以这里应该是imp调用doPaint方法

(3):new GIFImage( )
这里是gif图像文件,new GIFImage( );

(4):new LinuxImp( )
这里是Linux操作系统,new LinuxImp( );

(5):image.setImp(imageImp)

组合模式

21年上半

image-20221023091301908

image-20221023091503983

image-20221023093517903

image-20221023093543247

解析图:第(1)、(2)、(3)问

image-20221023100126758

解析图:第(4)题

image-20221023101444697

解析图:第(5)题

image-20221023102728169

答案:(1):protected

(2):abstract boolean addMenuElement(MenuComponent element)

(3):abstract List getElement( )

(4):List elementlist

(5):mainMenu.addMenuElement(subMenu)

装饰器模式

16年上半

image-20221023102818296

image-20221023102848634

image-20221023104000179

image-20221023104747285

解析图:第(1)问

image-20221023114726282

解析图:第(2)、(3)、(4)、(5)问

image-20221023121516139

答案:(1):ticket.printInvoice( )

(2):super.printInvoice( )

(3):super.printInvoice( )

(4):new HeadDecorator(new FootDecorator(t))

(5):new HeadDecorator(new FootDecorator(null))

享元模式

21年下半

image-20221023134517026

image-20221023134555300

image-20221023135045595

image-20221023135439613

解析图:第(1)问

image-20221023144102973

解析图:第(2)(3)(4)(5)问

image-20221023150647052

解析:(1):public abstract void draw( )

(2):Piece

(3):Piece

(4):piece.draw( )

(5):piece.draw( )

命令模式

14年下半

观察者模式

19年下半

状态模式

18年下半

策略模式

19年上半

访问者模式

15年上班

中介者模式

20年下半

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要什么自行车儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值