《大话设计模式》部分模式总结(一):

1.简单工厂模式:

   其中主要涉及到方面内容:

  一是:代码规范。这不仅需要初学者注意,也需要那些在这方面做得不够的老程序员加以重视。正如米老师经常说的一句话:代码是给别人看的!只有自己能看懂的代码,不是好代码。关于代码规范,提高班有专门的相关文档,是王鹏师哥和李雪茹师姐编写的,大家可以多看看。

   第二是:面向对象的编程(封装,继承和多态)。以活字印刷为例,生动形象地说明了面向对象的四大特点:可维护,可复用,可扩展和灵活性好。对于我来说,以前接触的都是面向过程的编程,所以改变起来还是有一定难度,不过有志者事竞成,相信在不断学习的这个过程中,我一定会充分感触并理解到面向对象编程的艺术美。

   第三点就是UML类图的四种关系:关联,继承,依赖和组合。一些关系的具体应用,我们会在稍后的机房收费系统中用到,多看,多用,自然就熟悉了。

   第四点就是简单工厂模式了。它主要有三个参与者:抽象角色,具体产品角色和工厂角色。可以解决如何实例化对象的问题。


2.策略模式:

   通过做一个商场收银软件为例了解策略模式。示例具体内容营业员根据客户所购买商品的单价和数量,向客户收费。

   策略模式是一种定义一系列算法的方法,它的优点有:(1)以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合(2)它的Strategy类层次为Context定义了一系列的可供重用的算法或行为,继承有助于析取出这些算法中的公共功能。(3)简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。

   综上可用一句话来表示:策略模式就是用来封装算法的,换言之,策略模式封装了变化。


3.装饰模式:

   通过小菜的不同穿着服饰为例,说明:装饰模式就是为已有功能动态地添加更多功能的一种方式。

  它的优点是:它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象。也就是把类中的装饰功能从类中搬移去除,这样可以简化原有的类。有效地把类的核心职责和装饰功能区分开了,这样可以去除相关类中重复的装饰逻辑。


4.代理模式:

   讲了一个高中时代,为他人作嫁衣的故事,说明了代理模式。代理模式就是为其他对象提供一种代理以控制对这个对象的访问。

  它的应用主要有四种:(1)远程代理,也就是为一个对在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实(2)虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。(3)安全代理,用来控制真实对象访问时的权限。(4)智能指引,指当调用真实的对象时,代理处理另外一些事。


5.工厂方法模式:

   通过讲述一群学生代替生病的同学,匿名照顾孤寡老人的事情,展开工厂方法模式的学习。工厂方法模式:是定义一个用于创建对象的接口,让子类决定实例化哪一个类。它使得一个类的实例化延迟到其子类。

   细心的同学会发现,在工厂方法中选择判断的问题还是存在的,但是工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,想要增加功能,本来是改工厂类的(在简单工厂中),现在只需要修改客户端即可。


6.原型模式:

   通过小菜夸张并且大量复印的简历,引出原型模式。原型模式:也就是用原型实例指定创建对象的种类,并且通过拷贝这些原型,来创建新的对象。这其中涉及到了深复制和浅复制。

   浅复制是被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。与之不同的深复制则是把引用对象的变量指向复制过的新对象。


7.模板方法模式:

   通过标准化考试,讲解了这一模式。模版方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。它通过把不便行为搬移到超类,去除子类中的重复代码来体现它的优势。可以说模版方法模式提供了一个很好的代码复用平台。


8.外观模式:

   通过对比购买基金和个人炒股,来说明外观模式。外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

   那么,何时使用外观模式呢?(1)设计初期,有意识的分层(2)开发阶段,增加Facade提供一个简单的接口,减少子系统由于不断的重构造成的越来越复杂的情况。(3)维护一个遗留的大型系统时,为新系统开发一个外观Facade类。

 

未完待续,敬请期待~

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值