博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象与设计模式
阅读量:5294 次
发布时间:2019-06-14

本文共 2275 字,大约阅读时间需要 7 分钟。

参考:

 

(一)OO基础:

抽象

封装

继承

多态

 

(二)OO原则

面向对象原则让我的程序模块达到“高内聚低耦合”.高内聚是指某个特定模块(程序,类型)都应完成一系列相关功能,高内聚意味可维护性,可重新性,因为模块对外部的依赖少(功能的完备性)。耦合是描述模块之间的依赖程度,低耦合则意味着修改另一个类不会影响其他类.

实现高内聚低耦合:行之有效的方式是分了关注点(SOC),将系统拆分成功能不同没有重叠功能集。每个功能只关注一个方面(Aspect)保证模块之间功能没有或者尽量少的重复。模块化内部实现细节隐藏,只暴露必须的接口,使得模块之间依赖于抽象,达到稳定。

 

1单一职责原则 

全称:“Single-Responsibility Principle” 

说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。 

SRP优点:消除耦合,减小因需求变化引起代码僵化。

 

2、开闭原则 

全称:“Open-Closed Principle” 

说明:对扩展开放,对修改关闭。 

优点:降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。 

 

3、 里氏代换原则 

全称:“Liskov Substitution Principle” 

说明:子类型必须能够替换它们的基类型。 

优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。 

 

4、依赖倒转原则

全称:“Dependence Inversion Principle”

说明:要依赖于抽象,不要依赖于具体。要针对接口编程,不针对实现编程。

优点:依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。

 

5、接口隔离原则

全称:“Interface Segregation Principle”

说明:使用多个专一功能的接口比使用一个的总接口总要好。

优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。

 

6、迪米特原则(最少知道原则)

全称:“Law of Demeter”

说明:对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系。

-------------------------------------分割线-------------------------------------------

 

7、 合成复用原则 

全称:“Favor Composition Over Inheritance” 

说明:尽量使用合成/聚合,尽量不要使用类继承 。 

优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。 

 

8 、封装变化

全称:“Encapsulate What Changes”

把您认为或怀疑将来要被修改的代码封装起来,这种面向对象设计模式的优点是:易于测试和维护恰当封装的代码。

 

(三)设计模式

参考1:

参考2:

 

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)
     

 

 

 

 

转载于:https://www.cnblogs.com/wytiger/p/5263348.html

你可能感兴趣的文章
Ext.Net- 数据源的绑定ComboBox
查看>>
设计模式(十三)代理模式(Proxy Pattern)
查看>>
ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。...
查看>>
[转]Android中OptionMenu的使用
查看>>
[转]Web Service Authentication
查看>>
初识HTML
查看>>
mysql locktables
查看>>
django(一)验证码
查看>>
day06 Java基础
查看>>
do...while和while...do的两种场景比较
查看>>
iOS被开发者遗忘在角落的NSException-其实它很强大
查看>>
WPF学习(1) – XAML
查看>>
集合类接口IEnumerable,IEnumerator,ICollection,IList,IDictionary理解
查看>>
Entity Framework返回IEnumerable还是IQueryable?
查看>>
零基础http代理http完美代理访问
查看>>
数组与内存控制笔记
查看>>
关于 Go2Shell (Go2Shell 可以在 Finder 中打开当前目录的终端窗口,是一个对开发者来说非常有用的App)...
查看>>
2008年我买了一本书 书名叫“PHP 6”
查看>>
管道,数据共享,进程池
查看>>
UITableView beginUpdate和endUpdate使用的前提
查看>>