设计模式无招胜有招之设计原理和方法

原创 2016年06月01日 15:56:27

本文是“无招胜有招”的核心。首先声明这里讲的设计原理和方法基本上是基于“可扩展性”做出的。当系统面临变化的时候,如何抵挡变化对系统的冲击。


先看一个例子,如果一个类A调用了B中的一个方法,那么我们说A依赖于另一个类B。你可以想象成A骑在B身上。当B动的时候,A也要跟着动。我们的目标是B自己都跟自己的,A完全没有感觉。


面向对象设计中的多态(虚函数,动态绑定)可以实现这样的目标。所谓的多态就是保持函数signature不变的情况下,实现不同的功能。

假设有一个抽象类Animal,有两个具体类Cat和Dog。Animal中有虚函数makeSound().

我们就可如下编程

Animal animal = getAnimal()//   这个getAnimal里面可能有 new Dog()这样的语句。

animal.makeSound();


可以看到,不论狗如何变化,这里都不会变化。甚至当狗变成猫的时候,这里也不会有任何变化。


这个就是可扩展性的最基本的语法上的支持和最基本的原理。


那么怎么样使得你的代码能演变成这样的代码呢?

这里提供了几个方法。

解耦,封装变化,抽象,优先使用组合,针对接口编程


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式无招胜有招之设计目的

为什么大家都说计算机是青春饭呢?这是因为大部分计算式知识是个纯粹的对错的知识。比如你学习C++编程,写个表达式,编译器能过就是对的,不能过就是错的。而这个对错的门槛是非常低的。任何人只要学过几天都会的...

设计模式无招胜有招之设计技术-面向对象设计语言支持

面向对象的设计语言提供了很多和对象相关的技术。   面向对象的基本特征,封装继承和多态;JAVA里面提供了反射;函数重载;C++里面的模板;多重继承;接口继承;抽象类等等。   这些技术在面向对象设计...

JAVA模板方法设计模式(从现实生活角度理解代码原理)

概述: 定义一个功能的框架(骨架),一部分功能是确定的,一部分功能是不确定的,先把确定的部分实现,把不确定的部分延迟到子类中实现。 实现该模式的关键步骤: 第一步:抽象类,实现模板方法,定义...

黑马程序员-java垃圾回收原理、组合设计模式、Object中的两个方法(to String() finalize())总结

---------------------- android培训、java培训、期待与您交流! ---------------------- 1、  垃圾回收: (1)       对象销...

Java之RMI设计模式基本原理与示例

1. Name RMI是Romote Method Invocation的缩写,就是远程方法调用。 2. Intent 具体的说,就是能够通过这种机制,实现在一个JVM上调用另一个JVM...

Prototype设计模式的原理和用法

在软件开发中,有时候可能会需要创建一些特别复杂的对象,如果系统中已经存在同样类型的对象,并且不同的属性个数相差不大的话,用Prototype模式可能是一个理想的选择。 定义 :用原型实例指定创建...

Tomcat 系统架构与设计模式,第 1 部分: 工作原理

从事IT这些年夫是学的东西越多,就感觉自己知道的就越少,继续在自己的道路上走下去。下面开始介绍tomcat的学习: 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用...

Tomcat 系统架构与设计模式,第 1 部分 工作原理

http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html 系列内容: 此内容是该系列 2 部分...

Tomcat 系统架构与设计模式,第 1 部分: 工作原理

这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式。本文是第 1 部分,将主要从 Tomcat 如何分发请求、如何处理多用户同时请求,还有它的多级容器...

Tomcat 系统架构与设计模式,第 1 部分: 工作原理

许令波,现就职于淘宝网,是一名 Java 开发工程师。对大型互联网架构设计颇感兴趣,并对一些开源框架也有比较深入的研究。 原文地址:http://www.ibm.com/developerworks...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)