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

原创 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++编程,写个表达式,编译器能过就是对的,不能过就是错的。而这个对错的门槛是非常低的。任何人只要学过几天都会的...
  • thirtyfive16
  • thirtyfive16
  • 2016年06月01日 13:23
  • 300

设计模式之无招胜有招

GOF设计模式从出版(1995)到今天(2016)过去21年了。 21年过去了,设计模式仍然是计算机领域的高精尖技术。这是因为设计模式在很高的抽象级别上抓住了设计的本质,而这个本质在近三十年没有改...
  • thirtyfive16
  • thirtyfive16
  • 2016年05月30日 09:25
  • 132

读《领域驱动设计模式、原理与实践》

美国,Scott Millett, Nick Tune 代码示例用的是 C# 我喜欢本书的原理部分就是前部分。 不喜欢的点是: 纸太溥了,南方潮不好翻,这下更不好翻了。书的油味太不好闻了。...
  • wide288
  • wide288
  • 2017年04月17日 10:08
  • 714

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

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

设计模式【工厂方法模式】

本文主要是分享自己在学习设计模式过程中的心得与记录,有什么不当之处,望各位有心关注的看官,给予指证与说明。本文主要讲述【工厂方法模式】,望各位细细品读。【转载使用,请注明出处:http://blog....
  • ma_hoking
  • ma_hoking
  • 2014年09月23日 22:34
  • 1205

工厂方法及其设计原则

一、第一个设计模式原则:按接口编程 Interface IAlpha 接口名 Class Alpha 实现接口 Variable useAlpha 实例化新的Alpha 第二个设计模式原则:优...
  • qq_31159377
  • qq_31159377
  • 2015年10月27日 16:52
  • 972

Spring整合JDBC模板方法设计模式之基于组合的实现

Spring整合JDBC模板方法设计模式之基于组合的实现: 模板设计模式指的是将相应的模板方法提取出来在一个专门的一个位置定义,然后把相同调用过程的操作通过模板实现。 对于模板设计模式,一般有2中方式...
  • rzg813
  • rzg813
  • 2014年09月23日 01:03
  • 3090

工厂方法模式(Factory Method)-最易懂的设计模式解析

前言在上文提到的最易懂的设计模式系列解析:简单工厂模式,发现简单工厂模式存在一系列问题: 工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭...
  • carson_ho
  • carson_ho
  • 2016年08月28日 08:31
  • 2874

js对象或类的方法设计模式解读

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象。 ECMAScript 拥有很多创建对象或类的方法。 工厂方式 原始的方式 因为...
  • basycia
  • basycia
  • 2016年01月06日 15:31
  • 216

AOP和IoC实现原理【用到的设计模式】

文章来源:http://blog.csdn.net/longyulu/article/details/36174979 用过spring的朋友都知道spring的强大和高深,都觉得深不可测,...
  • buster2014
  • buster2014
  • 2015年08月05日 16:49
  • 2850
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式无招胜有招之设计原理和方法
举报原因:
原因补充:

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