【设计模式】面向对象基础---温故知新

什么是设计模式?

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

设计模式的分类有哪些?

  • 创建型模式:抽象了对象实例化的过程,用来帮助创建对象的实例。Abstract Factory(工厂模式),Builder(构建者模式又叫生成器模式),Factory Method(工厂方法,模式工厂方法),Prototype(原型模式),Singleton(单例模式)。
  • 结构型模式:描述如何组合类和对象以获得更大的结构。Adapter(适配器模式),Bridge(桥接模式),Composite(组合模式),Decorator(装饰器模式),Facade(外观模式),Flyweight(享元模式),Proxy(代理模式)。
  • 行为型模式:描述算法和对象间职责的分配。Chain of Responsibility(责任链式模式),Observer(观察者模式),Command(命令模式),Interpreter(解释器模式),Iterator(迭代器模式) ,Mediator(中介者模式) ,Memento(备忘录模式), State(状态模式) ,Strategy(策略模式) ,Template Method(模板方法模式) ,Visitor(访问者模式)。

面向对象三大特性

耦合性(coupling ):耦合性也叫块间联系。指软件系统结构中各个模块间 相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合 的高低取决于模块间接口的复杂性,调用的方式以及 传递的信息

  • 封装:每个对象都包含它能进行操作所需要的所有信息。方法和属性包装在类中。良好的封装能够减少耦合(代码与界面)。类内部的实现可以自由地修改。类具有清晰的对外接口(ShoutNum属性等)。
  • 继承:类的继承代表了一种AKO(is-a)的关系。子类具有自己的属性和功能。子类可以改写父类中的功能(方法重写、与多态有关)。继承破坏封装,父类实现细节暴露给子类,增大了两个类之间耦合性。继承是一种类与类之间强耦合的关系
  • 多态:多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果。多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

多态的实现

  • 为了使子类的实例完全接替来自父类的类 成员,父类必须将该成员声明为虚拟的。 通过在该成员的返回类型之前添加virtual关键字来实现。
  • 子类可以选择使用override关键字,将父类实现替换为它自己的实现,这就是方法重写(方法覆盖)

PS:

  • 要实现多态,对象的声明必须是父类,而不是子类,实例化的对象是子类。
  • 虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。

抽象类

  • 抽象类不能实例化
  • 抽象方法若要实现功能必须被子类重写。(抽象方法是没有实现体的虚方法
  • 如果类中包含抽象方法,那么类就必须定义为抽象类。
  • 抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。
  • 抽象类是被用来继承的,在等级节点中,抽象类是树枝节点,具体类是树叶节点。

接口

一个接口就相当于是一个功能。要想某个类具有某个功能,直接实现一个接口就可以了。一个类可以实现多个接口,这样就解决了抽象类的继承问题。

接口与抽象类的区别

  • 抽象类是一类事物的高度聚合,那么对于继承抽象类的子类和抽象类来说,属于“ako”的关系;而接口是定义行为规范,因此对于实接口的子类和接口来说,是“行为需要按照接口来完成”。
  • 抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。
  • 继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。
  • 在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。

委托与事件

  • 委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。
  • 委托对象用关键字delegate来声明
  • 事件对象用event关键字声明
  • 使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。
  • +=是增加委托实例对象的意思。
  • -=减少一个需要触发事件时通知的对象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值