zoukankan      html  css  js  c++  java
  • 设计六原则

    开闭原则(核心)

    Open Close Principle
    理论:对扩展开放,对修改关闭(Open for extension)
    实践:尽量使用接口和抽象类(Cloded for modification)

    《第三回 四海千山皆拱伏 九幽十类尽除名》
    腾讯视屏《太白金星启奏希望能降旨诏安,和平降服美猴王孙悟空》53“无广告
    玉帝道:“那路神将下界收伏?”

    言未已,班中闪出太白长庚星俯伏启奏道:“上圣三界中,凡有九窍者,皆可修仙。奈此猴乃天地育成之体,日月孕就之身,他也顶天履地,服露餐霞,今既修成仙道,有降龙伏虎之能,与人何以异哉?臣启陛下,可念生化之慈恩,降一道招安圣旨,把他宣来上界,授他一个大小官职,与他籍名在箓,拘束此间。若受天命,后再升赏;若违天命,就此擒拿。一则不动众劳师,二则收仙有道也。”

    玉帝闻言甚喜,道:“依卿所奏。”即着文曲星官修诏,着太白金星招安。

    |--“不动众劳师”,是闭;“收仙有道”,是开。

    |--给孙悟空一个弼马温的管制,既可以使天庭系统适应新的变化(需求变更),又不改变原有的秩序。

    |--在面向对象设计中的体现是:不允许改变抽象层,可以扩展实现层。

    里氏代换原则

    Liskov Substitution Principle, LSP

    理论:子可代父(子类对象可以替换父类对象)
    父类替换成子类,程序的行为没有变化,所以父类可以代表任何子类---体现其可重用性

    实践:以父类名义声明子类对象

    List<String> list = new ArrayList<>();
    

    子类和父类是【is a的关系】

    《第三回 四海千山皆拱伏 九幽十类尽除名》
    悟空执着如意棒,径登森罗殿上,正中间南面坐下。十王即命掌案的判官取出文簿来查。

    那判官不敢怠慢,便到司房里,捧出五六簿文书并十类簿子,逐一查看。臝虫、毛虫、羽虫、昆虫、鳞介之属,俱无他名。

    又看到猴属之类,原来这猴似人相,不入人名;似臝虫,不居国界;似走兽,不伏麒麟管;似飞禽,不受凤凰辖。另有个簿子……悟空拿过簿子,把猴属之类,但有名者一概勾之。

    显然,地府掌管生灵,用的是“分门别类”的方法,孙悟空是要销自己“天产石猴”的生死簿,结果销了所有猴类的生死簿,所以“天产石猴”的也销了——父类代表子类。

    随着属性的增加,此原则可能被打破。

    依赖倒转原则(基础)

    Dependence Inversion Principle

    理论:抽象不应该依赖细节,细节应该依赖抽象——即对接口编程,而不是对实现编程。

    接口隔离原则

    Interface Segregation Principle

    理论:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

    interface 羽 {
    }
    interface 飞 {
    }
    class 鸵鸟 implements 羽 {
    }
    class 麻雀 implements 羽, 飞 {
    }
    

    迪米特法则(最少知道原则)

    Demeter Principle

    理论:各模块尽量独立。

    《黄飞鸿——狮王争霸》

    爱奇艺《黄飞鸿之三:狮王争霸》01'13"无广告

    李大人,所谓胜者为王,败者为寇,刚才天炮一响,如果没有天灯挡枪的话,胜负归谁还真没人知道。现在金牌在我黄某的手上,并非我赢了,大人为了大显我民神威而办的这场狮王争霸,死伤这么多人,在世人面前,其实我们都输了。
    以小民之见,我们不只要练武强身,以抗外敌,最重要的还是广开民智,智武和一,那才是国富民强之道。区区一个牌子,能否改变国运,还请李大人三思,这金牌留给您作纪念吧。告辞了!

    合成复用原则

    Composite Reuse Principle

    理论:尽量使用合成/聚合的方式,而不是使用继承(继承毕竟有耦合,父类改了子类就要改)。
    实践:Service层调用Dao层,有一个Dao对象的变量,而不是继承Dao。

    class Dao {
    }
    class Service /* extends Dao */{
    	Dao _dao;
    }
    
  • 相关阅读:
    预分区
    Flume学习笔记
    1
    在视图中使用时间
    Java 正则表达式的使用
    Reactor模式(反应器模式)
    Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案
    关于这周工作中遇到的关于缓存问题的记录
    eclipse import的项目报autowired cannot be resolved to a type的错误
    m2e插件的新下载地址
  • 原文地址:https://www.cnblogs.com/tigerlion/p/10662645.html
Copyright © 2011-2022 走看看