大话设计模式读书笔记一

这几天读了《大话设计模式》这不书。之前曾经看过《设计模式》那本大作,但是看到一半表示实在接受不了。所以就找来一本比较容易看懂的书。这本书写的确实风趣幽默,实在是好书。本片博文采取了《大话设计模式》里面的素材,所以,素材版权归原作所有。

0学好设计模式或者便于交流必须要学一下UML的基本知识。

1矩形框代表一个类。如果类是抽象的,那么要用斜体表示。第二层是字段和属性。第三次是类的方法和行为。对应的属性表示为

notationmeaning
+public
-private
#protected

一个例子就是
这里写图片描述
如果定义一个接口。要在名称上面加<<interface>>接口也用棒棒糖语法表示
这里写图片描述

下面将类与类之间的关系。

1继承关系空心三角加实线表示

这里写图片描述

2类实现一个接口用空心三角加虚线表示

这里写图片描述

3关联关系

知道另外一个类的存在
这里写图片描述
代码示例

class Penguin:bird
{
    private Climate climate;
}

聚合

聚合是一种弱的“拥有”关系,A对象可以包含B对象,但B对象不是A对象的一部分。用菱形箭头实线表示
这里写图片描述

class WideGooseAggregate
{
    private WideGoose[] arrayWideGoose;
}

合成

合成是一种强的拥有关系,体现了严格的部分和整体之间的关系。部分和整体的生命周期是一样的。用实心实现表示。
这里写图片描述

class Bird
{
    private Wing wing;
    public Bird()
    {
        wing=new Wing();
    }
}

6依赖关系。

依赖关系用虚线箭头表示,也是用得到的意思
这里写图片描述

abstract class Animal
{
    public Metebolism(Oxygen oxygen,Water water)
    {

    }
}

有了基本的UML知识,我们就可以方便的交流了。

1工厂模式

通过工厂建立类,可以对类进行集中管理。比如在编写计算器过程中,可以建立一个运算工厂,用运算工厂实现各种运算。可以降低视图和操作间的耦合度

2策略模式

它定义了算法家族,分别封装起来,让他们直接可以互相替换,这些算法都是完成相同的工作,只是实现不同。

如字体排版,是按照什么算法排版确实有很多种变化。此模式让算法的变化,不会影响到使用算法的用户。当然策略模式不仅可以封装一个算法,只要在不同的时间实现不同的业务规则就可以考虑策略模式。策略模式可以和工厂模式联合起来使用。
比如排版我们可以建立一个 排版类。客户端调用排版类可以这样
new排版类(“方式一”).这样排版类可以在构造函数中调用排版算法工程类更具“方式一”这个参数返回一个算法类加入到排版类中。然后执行就可以。书中给了另外一个例子
这里写图片描述

3几个设计原则

a单一原则

就一个类而言,应该仅有一个因其他变化的原因。

也可以理解为一个类只干一个活。也就是不要设计复杂的类。

b开放封闭原则

软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。

这个和继承非常像

c依赖倒转原则

第一条高层模块不应该依赖底层模块。两个都应该依赖抽象。

这里可以按照里氏代换原则理解,就是子类型必须能够替换掉他们的父类型。一个软件尸体如果使用是一个父类的话,那么一定使用于其子类,而且察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,那么程序的行为没有变化。案例就是如果希望更好数据库,那么高层的软件不需要做任何修改,只要替换掉数据库驱动就好。

第二条抽象不应该依赖细节。细节应该依赖抽象。

这两条的意思说白了是面向接口编程,不要面向实现编程。正是由于可以替换掉底层的代码,所以高层的代码才能够得到复用。

4装饰模式

动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活

这里写图片描述
这里。我们可以在中实现一个人的基本内容。或者可以建立一个单独的人的子类,用来实现人的基本内容。之后在每个类都要实现一个函数名字叫装饰,传入参数为人。这样每个衣服调用 装饰(人)这样就可以拿着衣服找人了,我们也可以衣服装饰衣服(后面的衣服里面修饰一个人,类似于递归的意思)
这种方法的有点就是,我们可以随时多种灵活的拓展人的表现行为。并在,我们去掉所有的装饰还是本身人这个类。不用修改人这个类的代码

5代理模式

为其他对象提供一种代理以控制对这个对象的访问

这里写图片描述

代理模式要和真正的类实现统一个接口。然后在代理类里面存储一个真实类的引用。然后调用真实类执行操作。。

代理可以隐藏一些东西。用来提高安全性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值