《Head.First设计模式读书笔记》之设计原则一、二和三

简介:
ü   设计原则 1 :找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
例如:对于一个鸭子类,不同的鸭子(真鸭子,木头鸭子等)有不同的飞行行为,呱呱叫行为,所以要把这两个行为从鸭子类中分离出来,在鸭子类中只保存那些不变的部分。
 
ü   设计原则 2 :针对接口编程而不是针对实现编程。
这里的接口有多个含义,它可以是 java 中的 interface ,也可以是抽象类。 “针对接口编程”, 关键就在多态 。利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为,不会被绑死在超类型的行为上。“针对超类型编程”这句话,可以更明确地说成“变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只 要是具体实现此超类型的类所产生的对象,都可以指定给这个变量
举个例子:
假设有一个抽象类 Animal ,其下有两个实现类  Dog Cat 继承自 Animal 。做法如下:
²  针对实现编程:
Dog dog = new Dog();
bj.bark();
注: 声明变量“ dog   Dog 类型 ( Animal 的具体实现 ) ,会造成我们必须针对具体实现编码。
²  针对接口 / 抽象类编程 :
Animal animal = new Dog();
Animal.makeSound();
注:利用 animal 进行多态的调用。
 

设计原则3:多用组合(composition),少用继承

使用组合建立系统具有很大的弹性,不仅可将行为封装成类,更可以“在运行时动态地改变行为 ,只要组合的行为对象符合正确的接口标准即可。
 
     例如:在设计原则一中我们把“飞行行为”和“呱呱叫行为”这两个变化的行 为从鸭子类中分离出来。这里我们就设计这两个行为和鸭子类:
以上     以上为两个行为接口和它的实现类。此时我们要做的就是把两个行为整合到鸭子类中,具体怎么整合?继承吗?继承只能继承一个特定的类,因此用继承将不能“在运行时动态地改变行为”。那么我们选用组合。
        Duck类中“加入两个实例变量”,分别为“flyBehavior”与“quackBehavior”,声明为接口类型(而不是具体类实现类型),每个鸭子对象都会动态地设置这些变量以在运行时引用正确的行为类型(例如:FlyWithWingsSqueak等)
 
此时我们就把两个行为组合到 Duck 类中了,既然使用了组合,我们怎么 在运行时动态地改变行为呢?如下我们写一个 main 函数来看看:
    p ublic static void mian(String args[]){
       Duck duck = new Duck();
       duck .setFlyBehavior(new FlyNoWay());
       duck .setQuackBehavior(new Quack());
        // 此时若想要鸭子能飞,我们可以通过 setter 方法 在运行时动态地改变行为
       duck.setFlyBehavior(new FlyWithWings());
    }
         Sping 中依赖注入(IOC)使用的就是组合。









本文转自 yzzh9 51CTO博客,原文链接:http://blog.51cto.com/java999/193800,如需转载请自行联系原作者
目录
相关文章
|
设计模式 关系型数据库
【设计模式——学习笔记】设计模式简介+七大设计原则介绍(下)
【设计模式——学习笔记】设计模式简介+七大设计原则介绍
139 0
|
设计模式 前端开发 算法
设计模式之设计原则
程序设计的要遵循的一些理论,也可以理解为程序设计的一种要求和目标,是面向对象程序设计的基石,也是面向对象程序设计的质量保障和依据。
90 0
|
3月前
|
设计模式 Java 测试技术
Java设计模式-UML与设计原则(1)
Java设计模式-UML与设计原则(1)
|
4月前
|
设计模式 前端开发 JavaScript
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
|
5月前
|
设计模式 算法
交易链路设计原则&模式问题之中介者(Mediator)方法设计模式是什么,如何解决
交易链路设计原则&模式问题之中介者(Mediator)方法设计模式是什么,如何解决
|
7月前
|
设计模式 算法 Java
【设计模式系列笔记】设计模式与设计原则
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 设计原则是一些通用的设计指导方针,它们提供了如何设计一个优秀的软件系统的基本思想和规则。指导着设计者如何组织代码以实现高内聚、低耦合、易扩展和易维护的软件系统。
92 4
|
设计模式 Java 关系型数据库
Java设计模式中的设计原则 2
Java设计模式中的设计原则
105 0
|
7月前
|
设计模式 Java 数据安全/隐私保护
设计模式之六大设计原则
设计模式之六大设计原则
78 0
|
7月前
|
设计模式 关系型数据库 程序员
【设计模式】设计原则
【1月更文挑战第12天】【设计模式】设计原则
|
设计模式 Java 程序员
【设计模式——学习笔记】设计模式简介+七大设计原则介绍(上)
【设计模式——学习笔记】设计模式简介+七大设计原则介绍
59 2