开闭原则(Open-Closed Principle):
对扩展开放,对修改关闭。要点在于抽象,通过抽象出类或接口,使得不同功能可以通过细化子类或接口实现去完成,达到了功能扩展,而有尽量不影响原有功能代码。
单一职责原则(Single Responsibility Principle ):
一个类,最好只有一个职责,所谓职责,就是引起类(对象)行为变化的原因,如果一个类有很多职责,那么导致对象行为变化的原因就会很多,这样就有可能导致设计混乱,易出现bug,如果一个职责发生变化就会导致整个类都要被修改,这会违背开闭原则.单一职责原则确保了类功能的高内聚性。
里氏代换原则(Liskov Substitution Principle):
某段功能代码使用的是一个父类对象的话,那么用其子类对象去代替父类对象之后,功能代码是能够完全正常使用,不会察觉出对象的变化。换而言之,任何基类可以出现的地方,子类一定可以出现。而里氏代换原则,则是实现抽象复用的基础。通过里氏代换原则的抽象处理,则能更大程度的保证开闭原则。
依赖倒置原则(Dependence Inversion Principle ):
抽象不应该依赖于细节,细节应该依赖于抽象。
高层模块不依赖底层模块,两者都依赖抽象。
程序中所有的依赖关系都应该终止与抽象类或者接口,则有:
1.任何变量都不应该持有一个指向具体类的指针或者引用
2.任何类都不应该从具体类派生
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法
当然每个程序中都会有违反该启发原则的情况.有时候要创建具体类的实例,而创建这些实例的模块将会依赖于它们.此外,该启发原则对于那些虽是具体但却稳定的类来说似乎不太合理.如果一个具体类不会改变,并且也不会创建其他类似的派生类,那么依赖于它并不会造成损害.
迪米特法则(Law of Demeter ):
又叫最少知识法则。就是说一个对象应当对其他对象尽可能少的了解,如果两个对象直接不发生关系,那么就不应该一个直接请求另一个,而只应该第三方去请求服务。目的在于降低类之间的耦合关系。如果每个类尽量减少对其他类的依赖,那么系统的功能模块功能就会相对独立,这样的话系统间存在尽可能少的依赖关系,最终达到松耦合的目的。
分享到:
相关推荐
24种设计模式介绍与6大设计原则希望这本书的阅读者具备最基本的代码编写能力,您是一个初级的 coder,可以从中领会到怎么设计 一段优秀的代码;您是一个高级程序员,可以从中全面了解到设计模式以及 Java 的边角技术...
这是设计模式的工厂模式的简单代码,是用的菜鸟教程网站零散例子,在本地实际跑代码。自己给自己做个复习
博客原地址:http://blog.csdn.net/lhy_ycu/article/details/40031567
本人自己收集的一些比较好的学习设计模式的教程!里面包含了很多种设计模式学习!通俗易懂......QQ:82204642
设计模式(菜鸟到高手)
设计模式(Design pattern)是一套被反复使用、...本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!
这是设计模式的工厂模式的改善代码版本,用了反射机制,是用的菜鸟教程网站零散例子,在本地实际跑代码。自己给自己做个复习
设计模式(Design pattern)是一套被反复使用、...本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!
主要介绍23中设计模式,其中都有基于Java的代码示例
深入浅出设计模式,深入浅出设计模式,深入浅出设计模式
详细介绍了java的23种设计模式,并且对设计模式进行了简明扼要的介绍,并且每种设计模式带着一个小例子
简单例子说明了java的23种设计模式的原理,方便大家进行程序开发,对于入门级选手(我也是初学者)有很大的帮助
设计模式(Design pattern)是一套被反复使用、...本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!
主要为大家详细介绍了java设计模式之单例模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
深入浅出设计模式(Head First Design Patterns)完整版,由本人精心整理网上的JPG版制作成PDF版供各位编程爱好者下载学习,这部模式教程诙谐幽默,寓教于乐,实乃菜鸟成才必备之选。共分为11个压缩包,绝对的物有所值...
C#23种设计模式【完整】(亲测可用) C#23种设计模式【完整】(亲测可用)
菜鸟学设计模式(28天)[收集].pdf
java常用的设计模式一个简单总结,如工厂模式、单例模式、代理模式等等。(楼主也是未入门的菜鸟,如有错误请及时联系楼主更正,谢谢!)
23种软件设计模式 工厂模式 建造模式等等常用软件设计模式