面向对象与设计模式
2016-03-10 20:34
134 查看
(一)OO基础:
抽象
封装
继承
多态
(二)OO原则
面向对象原则让我的程序模块达到“高内聚低耦合”.高内聚是指某个特定模块(程序,类型)都应完成一系列相关功能,高内聚意味可维护性,可重新性,因为模块对外部的依赖少(功能的完备性)。耦合是描述模块之间的依赖程度,低耦合则意味着修改另一个类不会影响其他类.
实现高内聚低耦合:行之有效的方式是分了关注点(SOC),将系统拆分成功能不同没有重叠功能集。每个功能只关注一个方面(Aspect)保证模块之间功能没有或者尽量少的重复。模块化内部实现细节隐藏,只暴露必须的接口,使得模块之间依赖于抽象,达到稳定。
1、开闭原则
全称:“Open-Closed Principle”
说明:对扩展开放,对修改关闭。
优点:降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。
2、里氏代换原则
全称:“Liskov Substitution Principle”
说明:子类型必须能够替换它们的基类型。
优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。
3、[b] 合成复用原则[/b]
全称:“Favor Composition Over Inheritance”
说明:尽量使用合成/聚合,尽量不要使用类继承 。
优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。
4、依赖倒转原则
全称:“Dependence Inversion Principle”
说明:要依赖于抽象,不要依赖于具体。要针对接口编程,不针对实现编程。
优点:依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
5、接口隔离原则
全称:“Interface Segregation Principle”
说明:使用多个专一功能的接口比使用一个的总接口总要好。
优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。
6、迪米特原则(最少知道原则)
全称:“Law of Demeter”
说明:对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系。
-------------------------------------分割线-------------------------------------------
7、单一职责原则
全称:“Single-Responsibility Principle”
说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。
SRP优点:消除耦合,减小因需求变化引起代码僵化。
8 、封装变化
[b]全称:“Encapsulate What Changes”[/b]
把您认为或怀疑将来要被修改的代码封装起来,这种面向对象设计模式的优点是:易于测试和维护恰当封装的代码。
(三)设计模式
参考1:http://www.cnblogs.com/xing901022/category/597988.html
参考2:http://www.runoob.com/design-pattern/design-pattern-intro.html
GOF四人组的23种设计模式总体来说分为三大类:
创建型模式,主要用于创建对象同时隐藏创建逻辑的方式。共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,用于处理类或对象的组合。共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,用于描述类或对象之间怎样交互和怎么分配职责。共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。
下面用一个图片来整体描述一下设计模式之间的关系:
![](http://www.runoob.com/wp-content/uploads/2014/08/the-relationship-between-design-patterns.jpg)
抽象
封装
继承
多态
(二)OO原则
面向对象原则让我的程序模块达到“高内聚低耦合”.高内聚是指某个特定模块(程序,类型)都应完成一系列相关功能,高内聚意味可维护性,可重新性,因为模块对外部的依赖少(功能的完备性)。耦合是描述模块之间的依赖程度,低耦合则意味着修改另一个类不会影响其他类.
实现高内聚低耦合:行之有效的方式是分了关注点(SOC),将系统拆分成功能不同没有重叠功能集。每个功能只关注一个方面(Aspect)保证模块之间功能没有或者尽量少的重复。模块化内部实现细节隐藏,只暴露必须的接口,使得模块之间依赖于抽象,达到稳定。
1、开闭原则
全称:“Open-Closed Principle”
说明:对扩展开放,对修改关闭。
优点:降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。
2、里氏代换原则
全称:“Liskov Substitution Principle”
说明:子类型必须能够替换它们的基类型。
优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。
3、[b] 合成复用原则[/b]
全称:“Favor Composition Over Inheritance”
说明:尽量使用合成/聚合,尽量不要使用类继承 。
优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。
4、依赖倒转原则
全称:“Dependence Inversion Principle”
说明:要依赖于抽象,不要依赖于具体。要针对接口编程,不针对实现编程。
优点:依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
5、接口隔离原则
全称:“Interface Segregation Principle”
说明:使用多个专一功能的接口比使用一个的总接口总要好。
优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。
6、迪米特原则(最少知道原则)
全称:“Law of Demeter”
说明:对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系。
-------------------------------------分割线-------------------------------------------
7、单一职责原则
全称:“Single-Responsibility Principle”
说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。
SRP优点:消除耦合,减小因需求变化引起代码僵化。
8 、封装变化
[b]全称:“Encapsulate What Changes”[/b]
把您认为或怀疑将来要被修改的代码封装起来,这种面向对象设计模式的优点是:易于测试和维护恰当封装的代码。
(三)设计模式
参考1:http://www.cnblogs.com/xing901022/category/597988.html
参考2:http://www.runoob.com/design-pattern/design-pattern-intro.html
GOF四人组的23种设计模式总体来说分为三大类:
创建型模式,主要用于创建对象同时隐藏创建逻辑的方式。共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,用于处理类或对象的组合。共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,用于描述类或对象之间怎样交互和怎么分配职责。共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。
序号 | 模式 & 描述 | 包括 |
---|---|---|
1 | 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 | 单例模式(Singleton Pattern) 工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) |
2 | 结构型模式 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 | 适配器模式(Adapter Pattern) 代理模式(Proxy Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) |
3 | 行为型模式 这些设计模式特别关注对象之间的通信。 | 观察者模式(Observer Pattern) 策略模式(Strategy Pattern) 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) |
4 | J2EE 模式 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。 | MVC 模式(MVC Pattern) 数据访问对象模式(Data Access Object Pattern) 业务代表模式(Business Delegate Pattern) 组合实体模式(Composite Entity Pattern) 前端控制器模式(Front Controller Pattern) 拦截过滤器模式(Intercepting Filter Pattern) 服务定位器模式(Service Locator Pattern) 传输对象模式(Transfer Object Pattern) |
![](http://www.runoob.com/wp-content/uploads/2014/08/the-relationship-between-design-patterns.jpg)
![](http://images2015.cnblogs.com/blog/774260/201603/774260-20160310203239679-319303670.jpg)
相关文章推荐
- java语言的I/O操作预习
- 尚学堂java基础——第13、14集笔记
- Android NDK的C++ STL开发相关总结
- 几种常用排序算法的复习
- 几种常用排序算法的复习
- 《我是一只IT小小鸟》读后感
- MQL指标:理解生命周期函数、首态数据处理与尾部动态更新
- bzoj 1614(二分+最短路)
- error_reporting(E_ALL ^ E_NOTICE)详细说明
- [置顶] MATLAB和c#混合编程实现心电图显示软件
- Java以及Android回调机制的一些理解
- LeetCode 160. Intersection of Two Linked Lists
- 树状数组 http://blog.csdn.net/int64ago/article/details/7429868
- hihoCoder#1269 : 优化延迟
- Android实现控件动画效果
- bzoj 2656 [Zjoi2012]数列(sequence)(高精度)
- DQL数据查询语言(一)
- Word自动编号多级标题设置
- PAT-Dating (20)
- php的学习笔记之面向对象(五)访问修饰符