设计模式学习基础

一、UML部分基础

这里主要涉及类图中各个类之间的关系:依赖、关联、聚合、组合、继承、实现,它们的耦合度依次增强。
下面先用两张图来回忆一下UML里类图的基本用法(线、符号):
这里写图片描述
这里写图片描述
以下附上我个人的理解(比较简短):
- 依赖(虚线箭头):在运行期间产生的临时性的关系。
- 关联(实线箭头):静态、天然的关系。
- 聚合(实线空心菱形):整体与部分之间的关系,两者生命周期可以不同。
- 组合(实线实心菱形):比聚合程度更深的关系,具体表现在整体与部分的生命周期需一致。
- 继承(虚线三角形):表示父子关系,A is a B,就可以说A继承B。
- 实现(实线三角形):与继承的区别主要体现在代码中的继承是extends,而实现是implements。

对于类之间关系,除了从UML类图中理解,还可以从代码中直观感受。这篇博文中的代码例子足够帮助我们理解:设计模式中类的关系。看过之后回过头来看我上面那段的总结,应该很好理解了。

二、Java部分基础

这里由Java中的关键字展开(主要是类、方法和变量的修饰符)

  • abstract
    用abstract修饰的类叫做抽象类,用abstract修饰的方法叫做抽象方法。如果一个类中有抽象方法,那么这个类必须被声明为抽象类。抽象类不能被实例化,只能用来被继承。如果继承了一个抽象类,必须重写抽象类中的抽象方法。抽象方法没有方法体,只有方法的声明。
  • extends
    与abstract配套使用。extends 关键字用以表明继承。子类一定不能重写父类的final方法,一定要重写父类的abstract方法。一个类只能继承一个基类(Java只允许多层继承,不允许多重继承)。
  • interface
    接口可以看成是一个特殊的抽象类,但是接口中所有的方法都是抽象方法,默认情况下接口中的属性是用“public static final”修饰的,接口中的方法是用“public abstract”修饰的。
  • implements
    与interface配套使用,被修饰的类需实现相应接口的所有方法。
  • final
    用final修饰的变量不能被改变,用final修饰的类不能被继承,用final修饰 的方法不能被重写。
  • static
    如果一个成员(方法/变量)被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象,static 成员的最常见的例子是main( ) ,因为在程序开始执行时必须调用main()。
    如果一个方法被声明为static,那么它仅能调用静态方法和静态变量,不能引用this或super。
    如果一个变量被声明为static,一个类只申请一次static变量空间,该类的所有对象共用一个static变量。
  • new
    new 关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。如果默认构造函数被私有化那么就不能这样定义一个新对象(此时牵扯到单例模式)。
  • synchronized
    synchronized 关键字可防止代码的关键代码段一次被多个线程执行,是一种同步锁。
    如果应用于静态方法,那么,当该方法一次由一个线程执行时,其作用的范围是整个静态方法,作用的对象是这个类的所有对象。
    如果应用于实例方法,那么,当该方法一次由一个线程访问时,其作用的范围是整个方法,作用的对象是调用这个方法的对象。

三、设计模式六大原则

  • 单一职责原则
    一个类只负责一项职责,类的功能尽可能单一。
  • 开闭原则
    一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
  • 接口隔离原则
    一个类对另一个类的依赖应该建立在最小的接口上。
  • 依赖倒置原则
    高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。
  • 里氏替换原则
    子类可以扩展父类的功能,但不能改变父类原有的功能。
  • 迪米特法则
    一个类应该对其他类保持最少的了解。
总的来说,理解时遵循高内聚、低耦合即可。

以上图文部分来源于:
http://blog.csdn.net/wanlong2713/article/details/45092643
http://blog.csdn.net/zhengzhb/article/details/7190158
http://blog.csdn.net/zhengzhb/article/details/7187278

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值