这篇文章,
不需要你一次就看懂
,
如果你真的能一次都看懂
,
我想
设计
模式
对于你来说已经没什么难度了..
因为设计模式就是要体现这些原则的
,
你可以把设计原则看做是一门语言
,
设计模式是由这些语言编码的程序
..
你既然已经明白
,
精通了语言
,
剩下的编码自然是很简单的事情
,
编码的越多则经验越多
,
经验越多则对原则的理解就越深
...
这是一个
学习
领悟
的过程..
我希望这篇文章能帮助新人感受到
设计模式的乐趣
, 避免重复编码
....
减少劳动量
..
如果你能在用心静静的体会文章的每个字
,
每段话的意思
,
这样可以避免走很多弯路
...
我以前学习设计模式的时候
,
就是 因为忽略了原则
,
凭着感觉
,
看着书来学习设计模式
,
结果就是知其然而不知其所以然
....
如果你是初学设计模式
,
再了解了
OOP
的三大原则
(
封套
,
继承
,
多态
)
之后
,
请反复的结合原则
,
来学习设计模式
..
这样可以达到事半功倍的效果
...
设计模式的核心原则是:"
开
-
闭
"
原则
( Open - Closed Principle
缩写
:OCP ),
一切的一切都是围绕着
"
开
-
闭
"
原则展开的
..
意思是,
在一个
系统
中,
对于扩展是开放的
,
对于修改是关闭的
,
一个好的系统是在不修改源
代码
的情况下,
可以扩展你的功能
..
而实现开闭原则的关键就是抽象化
.
在"
开
-
闭
"
原则中
,
不允许修改的是抽象的类或者接口
,
允许扩展的是具体的实现类
,
抽象类和接口在
"
开
-
闭
"
原则中扮演着极其重要的角色
..
即要预知可能变化的需求
.
又预见所有可能已知的扩展
..
所以在这里
"
抽象化
"
是关键
!!!
可变性的封闭原则:
找到系统的可变因素
,
将它封装起来
..
这是对 "
开
-
闭
"
原则最好的实现
..
不要把你的可变因素放在多个类中
,
或者散落在程序的各个角落
..
你应该将可变的因素
,
封套起来
..
并且切忌不要把所用的可变因素封套在一起
..
最好的解决办法是
,
分块封套你的可变因素
!!
避免超大类
,
超长类
,
超长
方法
的出现!!
给你的程序增加艺术气息
,
将程序艺术化是我们的目标
!!
里氏代换原则:
任何基类可以出现的地方
,
子类也可以出现
..
如果你通读过<Java
编程思想
>,
我想你应该明白这个原则
,
在书中
,Bruce Eckel
大师用了大量的章节来讲解
"
向上转型
"
和
"
向下转型
",
我想目的很清楚
,
不仅是要你明白类的型别
,
更重要的是要你明白父类与子类的关系
..
依赖倒转原则:
要依赖抽象
,
而不要依赖具体的实现
..
如 果说开闭原则是目标,
依赖倒转原则是到达
"
开闭
"
原则的手段
..
如果要达到最好的
"
开闭
"
原则
,
就要尽量的遵守依赖倒转原则
..
可以说依赖倒转原则是对
"
抽象化
"
的最好规范
!!
我个人感觉
,
依赖倒转原则也是里氏代换原则的补充
..
你理解了里氏代换原则
,
再来理解依赖倒转原则应该是很容易的
..
合成/
聚合原则
:
要尽量使用合成
/
聚合原则
,
而不是继承关系达到软件复用的目的
..
此原则和里氏代换原则氏相辅相成的
,
两者都是具体实现
"
开
-
闭
"
原则的规范
..
违反这一原则
:
就无法实现
"
开
-
闭
"
原则
..
先来看看什么是合成
,
什么是聚合
.
什么是合成?
合成:
是指一个整体对依托他而存在的关系
,
例如
:
一个人对他的房子和家具
,
其中他的房子和家具是不能被共享的
,
因为那些东西都是他自己的
..
并且人没了
,
这个也关系就没了
..
这个例子就好像
,
乌鸡百凤丸这个产品
,
它是有乌鸡和上等药材合成而来的一样
..
也比如网络游戏中的武器装备合成一样
,
多种东西合并为 一种超强的东西一样
..
什么是聚合?
聚合:
聚合是比合成关系的一种更强的依赖关系
,
聚合是一个整体对个体的部分
,
例如
,
一个奔驰
S360
汽车
,
对奔驰
S360
引擎
,
奔驰
S360
轮胎的关 系
..
这些关系就是带有聚合性质的
..
因为奔驰
S360
引擎和奔驰
S360
轮胎他们只能被奔驰
S360
汽车所用
,
离开了奔驰
S360
汽车
,
它们就失去了存 在的意义
..
在我们的设计中
,
这样的关系不应该频繁出现
..
这样会增大设计的耦合度
..
明白了合成和聚合关系,
再来理解合成
/
聚合原则应该就清楚了
..
要避免在系统设计中出现
,
一个类的继承层次超过
3
次
..
如果这样的话
,
可以考虑重构你的代码
,
或者重新设计结构
..
当然最好的办法就是考虑使用合成
/
聚合原则
...
迪米特法则:
系统中的类
,
尽量不要与其他类互相作用
,
减少类之间的耦合度
, 因为在你的系统中
,
扩展的时候
,
你可能需要修改这些类
,
而类与类之间的关系
,
决定了修改的复杂度
,
相互作用越多
,
则修改难度就越大
,
反之
,
如果相互作用的 越小
,
则修改起来的难度就越小
..
例如
A
类依赖
B
类
,
则
B
类依赖
C
类
,
当你在修改
A
类的时候
,
你要考虑
B
类是否会受到影响
,
而
B
类的影响是否又会影响到
C
类
..
如果此时
C
类再依赖
D
类的话
,
呵呵
,
我想这样的修改有的受了
..
接口隔离法则:
这个法则与迪米特法则是相通的
,
迪米特法则是目的,
而接口隔离法则是对迪米特法则的规范
..
为了做到尽可能小的耦合性
,
我们需要使用接口来规范类
,
用接口来约束类
.
要达到迪米特法则的要求
,
最好就是实现接口隔离法则
,
实现接口隔离法则
,
你也就满足了迪米特法则
...
如果你能看这里,
说明你已经对这些原则了有了感性的认识
..
这些原则是设计模式的核心
,
如果不能充分理解这些原则
,
是很难理解好设计模式的
..
如果第一遍看不懂,
没关系
,
请
反复揣摩,
细读每个字
,
每句话
..
对于这些原则,
我也是看了
N*N
遍才明白的
(
这期间也没任何人指点过我
,
更每人讲的这么细
,
奖励自己一下先
, 汗啊
)..
我推荐看完原则之后
,
请看设计模式
,
看两三个模式
,
然后理解一下
,
自己动手把模式实现出来
,
再回头来看原则
,
你会感觉
,
你的模式一定是满足了其 中的某些原则
!!
这是必然的
!!
只要你理解了原则
,
设计模式不难理解
..
就好比
,
有了内功基础的你
,
再来学习刀
,
剑
,
枪这些武器的时候
,
要比那些直接学习 刀
,
枪
,
剑的人
,
快很多
,
效果也好很多
...
分享到:
相关推荐
在探讨设计模式的入门知识之前,我们需要对面向对象(Object-Oriented,OO)和面向过程(Procedure-Oriented)...在学习过程中,理解其背后的面向对象原则,了解不同设计模式的特点和适用场景,是入门设计模式的关键。
设计模式入门教程 设计模式是软件工程中的一种最佳实践,它们是解决常见设计问题的模板,可以在多种情境下重用,以提高代码的可维护性和可扩展性。本教程将帮助初学者理解设计模式的基本概念,并通过实例来阐述其...
#### 描述解析:设计模式的入门与精通之路 描述中提到设计模式和面向对象编程,强调了它们对于软件设计师和开发者的重要性。这表明书籍将从基础出发,逐步深入,不仅教授设计模式的基础知识,还将引导读者理解设计...
《白话设计模式》文档很可能是以通俗易懂的方式介绍设计模式的入门读物。 在软件开发过程中,设计模式可以帮助我们更有效地组织代码,提高代码的可读性和可维护性。设计模式通常分为三类:创建型、结构型和行为型...
在实践中,设计模式可以提高团队之间的沟通效率,因为大家都遵循一套共同的设计原则和模式,使得代码更容易理解和复用。 总之,Java设计模式是每一位有志于提升编程技艺的开发者必修的课程。通过本入门教程,你将...
这份资源"24种设计模式介绍与6大设计原则"是为初学者提供了一个全面了解设计模式和设计原则的高清入门教程。在这个压缩包中,包含了一本名为"24种设计模式介绍与6大设计原则@www.java1234.com.pdf"的电子文档,该...
《Head First 设计模式》以其独特的视觉风格和易于理解的方式,为初学者提供了设计模式的入门指南。书中涵盖了23种经典的GOF(GoF,Gang of Four)设计模式,包括创建型模式(如单例模式、工厂模式)、结构型模式...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
读书笔记:java 23种设计模式 开闭原则 依赖倒转原则 迪米特法则 设计模式思想 Java入门demo
### Java设计模式(刘伟) #### 一、引言 在《Java设计模式》这本书中,作者刘伟...通过对这些设计模式的学习,开发者可以更好地理解面向对象设计的原则,掌握软件设计的精髓,从而写出更高质量、更易于维护的代码。
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的优秀实践和可...通过阅读这本书,你可以掌握如何在自己的项目中有效运用设计模式,让代码更符合面向对象设计原则,提高软件的可读性和可维护性。
单例模式是设计模式中最基础且常用的一种,它旨在确保一个类只有一个实例,并提供一个全局访问点。在软件开发中,有些对象只需要一个实例就能满足需求,比如线程池、数据库连接、配置管理等。使用单例模式可以避免...
首先,"深入浅出设计模式(中文版)-93页.pdf"很可能是一本简洁易懂的设计模式入门书籍,虽然只有93页,但可能包含了设计模式的基础概念、核心思想以及常见模式的实例解析。这本书可能会涵盖一些基础模式,如单例模式...
当我们谈论“Python编程 - 设计模式 - 从入门到实践”时,这意味着我们将探讨如何在Python编程中应用这些模式来提高软件开发的效率和质量。 首先,让我们理解什么是设计模式。设计模式并不特定于任何一种编程语言,...
通过学习这些设计模式,开发者能够更好地理解和应用面向对象的原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。这不仅有助于写出更加整洁、易于维护的代码,也有利于团队间的沟通和协作...
通过学习设计模式,开发者不仅能提高解决问题的能力,还能更好地理解软件架构的设计原则。本书不仅提供了理论上的指导,还通过PHP代码展示了实际的应用案例。无论你是初学者还是经验丰富的开发者,都可以从中获得有...
同时,书中也强调了面向对象设计的原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),这些都是理解和应用设计模式的基础。 《Head First设计模式》...