哈工大软件构造学习心得3


  运维通常是软件开发过程中最困难的工作,涉及到软件开发的方方面面。而软件开发的大部分成本也来自于维护阶段。因此在设计时就需要考虑软件的可维护性,而不能仅仅依靠运维工程师。
  本文主要讲述面向关键质量目标的软件构造技术之面向可维护性的设计模式。与面向复用性的设计模式类似,面向可维护性的设计模式同样使用委托等机制实现。

1 原因

  软件维护可以修复软件中的错误,改善软件的性能。

2 设计模式

2.1 工厂方法模式

解决的问题:工厂方法模式使得客户端可以不指明要创建哪个具体类的实例。通过定义一个用于创建对象的接口,让接口的子类型决定实例化哪个类,将类的实例化延迟到其子类进行实现。

  工厂模式的意义是定义一个创建产品对象的工厂接口,将实际的创建工作推迟到子类中。核心工厂类不再负责产品的创建,这样核心类就成为一个抽象工厂角色,只负责具体工厂子类必须要实现的方法。使得系统在不修改具体工厂角色的情况下引入新的产品。

2.2 静态工厂方法模式

解决的问题:静态工厂方法模式是简单工厂方法模式的衍生。完全实现“开-闭”原则,实现了可扩展。更复杂的层次结构也使得它可以应用于产品结果复杂的场合。

  相比于构造器创建对象,静态工厂方法可以具有指定的更有意义的名称,不必在每次调用的时候都创建新对象,还可以返回原返回类型的任意子类型。

2.3 抽象工厂模式

解决的问题:抽象工厂模式提供了一个接口用以创建一组相互依赖的对象,且不需要指明其具体实现类。

  以UI为例,一个UI包含多个窗口控件,这些窗口控件的组合在不同OS实现不同。先抽象出一个抽象工厂接口,内有两个接口分别负责创建窗口和控件,为窗口和空间分别抽象出接口,并设计具体类实现这两个接口。根据不同UI,实现不同的窗口和控件的组合,即继承抽象工厂类,实现里面的具体方法。
本质上,抽象工厂模式是把多类铲平的工厂方法模式结合在一起。

3 不同设计模式异同

  工厂方法模式和抽象工厂模式形式的不同在于工厂方法模式是一个方法,而抽象工厂模式是一个对象接口。因此对于工厂方法模式,它可以被子类型覆盖,从而将对象的实例化交给子类完成,或者说客户端不关注子类的实现,而是关注对象的功能,通过调用工厂方法得到相应的对象。而对于抽象工厂模式,它不产生一个实例,而是生产一类组件的工厂,即该对象中可以提供多个工厂接口,可以在不指定具体类的情况下提供关联或者独立组件。然而一个产品的组件可以唯一确定,不可更改,因此抽象工厂模式区别于直接使用多个工厂方法。相同点在于不将实例化的任务交给具体类本身的构造方法,而是交给另外的工厂接口。
  同工厂方法相同,静态工厂方法也将类的实现放到了抽象接口中,只不过是静态的,无法在子类型中覆盖。静态方法返回的是静态方法所在的实例化对象而不是当前类的实例化对象。因此PPT中的静态工厂方法本质上是使用了方法模式的变体静态工厂方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值