第三周作业
作业一:
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
实现输出
实现类和接口
抽象基类Window
WinForm实现类
Frame实现类
其他实现类
作业二:根据当周学习情况,完成一篇学习总结
模板方法模式
模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。
具体事例可以考虑Junit里面的单元测试,在基类TestCase里面定义了具体的方法执行模板runBare,在具体实现类里面不需要知道模板的实现,只要按照接口定义实现setUp tearDown和runTest就可以完成功能测试。
策略模式和模板方法
在单元测试中,需要对不同的TestCase和TestSuite进行测试,而每个测试执行的模板方法都是相同的,而具体的实现类的测试逻辑是不同的,这里就需要对执行Test的client实现策略模式,针对不同的逻辑调用不同的测试实现类。
组合模式
组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。
组合模式就像它的名字描述的一样,一个产品是由多个组件组成,组件表现了类似的功能,通过将这些功能组件组合在一起,可以进行统一的调用,降低了维护和开发成本。
比方说作业Window的实现,一个window里面有很多类似的组件,比如button、label、textbox、passwordbox、picture,他们都有类似的paint的功能,同时他们是整个window的一部分,对窗口的操作会整体上影响每个组件的行为,所以对所有组件进行组合 然后一起操作简化了实现。
装饰器模式
装饰器模式,顾名思义就是对类和方法装饰起到包装的作用,或者说在一个类or方法上增加功能。
比方说有个UserDao类实现了getUser(int id)接口,本来正常运行的,由于最近考虑对接口进行频率控制,如果通过继承功能来实现就比较复杂,比方说我有20个接口,都要增加频率控制,对每个接口的实现就都要修改,但是如果使用装饰器模式,我只需要通过集成类中使用频率控制的组件进行包装,就可避免对原有代码的修改,同时扩展了功能。
Spring中的设计模式
依赖注入DI和控制反转IoC
对象A依赖的对象B通过框架来实例化依赖的对象B,而不是new一个对象B,然后通过setter方法来实现对象B注入到对象A中。
控制反转IoC
控制反转就是控制权被反转,语言提供的实例化方法是new一个对象, 而现在实例化的控制由框架来实现, 所以控制权被反转了。
Spring的单例模式
简单说就是通过反射获取类名然后实例化,然后存储到Hashmap实例中,提供给用户使用。
Spring的MVC
Spring的MVC实现就是在原有的调度请求的基础上增加一层全局的Servelet,实现对所有请求逻辑的映射和功能实现。全局的Servlet控制的整体的处理流程(controller),具体的servlet处理业务逻辑(model),结果通过视图模板输出(view),然后全局servlet将结果返回给用户端。
评论