目录
抽象工厂模式
12年下半
解析:(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年上半
解析:(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年上半
解析:(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年上半
解析图:第(1)问
解析图:第(5)问
解析:(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年下半
解析图:第(1)问
解析图:第(2)问
解析图:第(3)、(4)、(5)问
解析:(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年上半
解析图:第(1)、(2)、(3)问
解析图:第(4)题
解析图:第(5)题
答案:(1):protected
(2):abstract boolean addMenuElement(MenuComponent element)
(3):abstract List getElement( )
(4):List elementlist
(5):mainMenu.addMenuElement(subMenu)
装饰器模式
16年上半
解析图:第(1)问
解析图:第(2)、(3)、(4)、(5)问
答案:(1):ticket.printInvoice( )
(2):super.printInvoice( )
(3):super.printInvoice( )
(4):new HeadDecorator(new FootDecorator(t))
(5):new HeadDecorator(new FootDecorator(null))
享元模式
21年下半
解析图:第(1)问
解析图:第(2)(3)(4)(5)问
解析:(1):public abstract void draw( )
(2):Piece
(3):Piece
(4):piece.draw( )
(5):piece.draw( )