Debut

开张了!噼里啪啦... ...

从此刻起开始学习并记录下相关的学习内容,从第一条出发,只是混个脸熟,不追求太多!

首先要知道每一种模式的定义,干啥用的,名称(英文的也要知道,我还学英语呢),能画出其类图,能写出1~2个小例子,

明确应用场景,大概先就这么多吧。下面弄点废话。:) 都是拷贝的 ):

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

  毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程 的基石,如同大厦的一块块砖石一样。
  GoF(“四人帮 ”, 指Gamma, Helm, Johnson & Vlissides, Addison-Wesley四人)的《设计模式》(1995年出版)是第一次将设计模式提升到理论高度,并将之规范化,本书提出了23种基本设计模式, 自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。

下面是设计模式的原则,摘自一个自称小角色的任务,很多还不理解,边看边理解边修改之。

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

一、“开-闭”原则(OCP)
1。定义:一个系统应该对扩展开发,对修改关闭。

2。详细解释:在设计一个模块的时候,应该使这个模块可以在不被修改的前提下被扩展。也就是不修改原有的代码,而扩展出一个新的功能。

3。自己的理解:开闭原则其实说的是对可变的部分进行封装,并给这个具体实现一个抽象的接口或父类,这样一来,当以后需要扩展新功能的时候,只需要增加一个新的类,继承或实现这个父类或接口。或者直接继承原来的具体实现。这样这个模块就可以在不修改原有代码的条件下,扩展新的功能了。

4。补充:
1)多态性污染:滥用多态,对于可变性不强的部分也增加大量的冗余代码增强其可扩展性。这样做是很没必要的,是一种为了模式而模式的做法。
2)具体类不是用来继承的:只要有可能,不要从具体类继承。
3)抽象类应该拥有尽可能多的共同代码,而应该拥有尽可能少的数据。(抽象类中的代码就算不使用,也不会占用内存空间,而变量不管是否使用都会占用内存)(创建一个子类对象时,JVM其实已经在子类对象中创建了一个父类的对象。)
4)使用继承的原则:
必须是is-a关系,也就是子类是超类的一个特殊种类,而不是超类的一个角色
永远不会出现需要将子类换成另一个类的子类的情况。
子类具有扩展超类的责任,而不是具有置换掉或注销掉超类的责任(如果子类需要大良地置换掉超类的行为,那么这个子类就不应当成为一个超类的子类)
只有在分类学角度上有意义时,才可以使用继承,不要从工具类继承

二、里氏代换原则(LSP)
1。定义:如果一个方法可以接受一个父类对象作为参数,那么就一定可以接受这个父类的子类的对象。反过来的说法不成立。
2。自己的理解:这个原则已经被JAVA很好地支持了,我们只需要在程序中注意这个原则的使用就OK了。也就是要针对抽象编程,而不应该针对具体实现编程。
3。补充:
1)java语言对LSP的局限:JAVA编译器不能检查一个系统在实现和商业逻辑上是否满足里氏代换。最著名的例子是“正方形类是否是长方形类的子类”的问题。
2)墨子:白马,马也;乘白马,乘马也。骊马,马也;乘骊马,乘马也。(里氏转换)
娣,美人也;爱娣,非爱美人也。盗,人也;恶盗,非恶人也。

三、依赖倒转原则(DIP)
1。定义:要针对抽象编程,不应该针对具体实现编程。(DIP是OCP的实现方式)
2。补充:以来倒转原则假定所有的具体类都是会变化的,但是在实际中并不完全如此,有些类是十分稳定的,对于这样的类,就没必要过多地去模式了。

四、接口隔离原则(ISP)
1。定义:使用多个专用的接口比使用单一的总接口要好。应该让接口最小化,而不应该将不同角色的行为定义在一个接口中。
2。自己的理解:看人下菜碟

五、合成/聚合复用原则(CARP)
1。定义:应该尽量使用合成/聚合,而少使用继承
2。难点;设计时的is-a,has-a关系。这设计到OOD的思想。

六、迪米特法则(LoD)
1。定义:一个对象应当对其他对象有尽可能少的了解。
2。自己的理解:尽量减少对象间通信,隐藏具体实现,仅仅暴露有限的对外接口。
3。注意:
1)在类的划分上,应当创建有弱耦合的类。
2)在类的结构设计上,每个类都应该尽量降低成员的访问权限
3)一个类应当尽可能设计成不可变类
4)在对其他类的引用上,一个对象对其他对象引用应当降到最低
4。补充:
1)谨慎使用Serializable,原因:没看明白

开张就到这里吧!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值