设计模式回顾

  设计模式本人比较倾向于敏捷开发的时候最好用(大神请忽略),总体设计比较倾向于自顶向下的设计。

 设计模式主要是根据设计原则在不同场景的使用经验的出来的,我们站在巨人的肩膀上来看看吧。

http://c.biancheng.net/design_pattern/

本人面试问的最多的是:什么是面向对象,讲讲你的理解?往往很少人能说好,只能说面向对象有三大特征:封装、继承、多态。背过无数次深入想过可能一次都没有。

谈谈本人经验的理解(如有更好的说法,请留言)。面向对象是一个高度的概括,延伸出的问题我们采用5W原则来思考:

面向对象是什么?

面向对象是一个高度概括的词。万物皆为对象。那么面向对象,可以是面向行为、面向场景、面向事件、面向事物甚至是面向项目等。强调的是目标,只有在复杂问题中抽出目标才能够知道到底做的是什么东西。才能真正的是面向对象了。

谁面向对象?

谁面向对象,主要是强调相互作用关系。万物皆有关系,就像万有引力一样。系统类的对象没有关系就没法运作。这是一个反向思维,从系统找使用者,需求分析阶段重点(使用者面向系统)。以使用者为对象来,那么系统就是来反应功能的(系统面向使用者)。以接口为对象,那么就是基础类来使用(基础类面向接口)。以事件为对象,那么就是触发事件的行为(行为面向事件)等

 

什么时候面向对象?

强调对象的生命周期。每个对象在系统运行的各个阶段有不同的表现。什么时候需要对象,什么时候消耗对象,显得尤为重要。

在哪里面向对象?

强调的是对象角度。在代码级别就是模块之间,系统级别可能就是服务器之间。看问题角度不一样。

如何面向对象?

强调面向对象方式:观察刻画,行为驱动等。

在基础认知上面,加了一些原则主要是为了应对变化,更加契合语言程序,不再是天马行空没有方向。

开闭原则(最佳):

可以通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。

里氏替换原则(不能做到完全开闭那就妥协,控制权限)

通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

依赖倒置原则(部分方法必须对外开放,但是都不能让他来继承,继承后就会拥有属性和方法。再次妥协加接口)

目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则。

单一职责原则(可继承,可实现带来功能无处不在,没法管理。加强管理原子性,类统一自己具备功能)

核心就是控制类的粒度大小、将对象解耦、提高其内聚性。如果遵循单一职责原则将有以下优点。

接口隔离原则(可实现,带来到处都可以访问,没法管理。加强管理原子性,加强接口约束、降低类和接口信息交互)

接口隔离原则是为了约束接口、降低类对接口的依赖性。

迪米特法则(权限管理,生命周期管理)

要求限制软件实体之间通信的宽度和深度

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值