OO学习--有关设计模式

 

原则:

 

 
      面向对象编程,培养面向对象思想。DDD,设计模式是面向对象的左右手。

   对象是人类的正常思维方式,它是表示具体东西或抽象的事物,它有单一的职责和统一的行为。(比如想到一个长方形的周长或面积,不能应当就想到对应的周长或面积,而是应当先想到长方形对应的是一个对象,它有对应的属性,长和宽,然后有对应的行为周长或面积还可以对应的相应的增长)

   “优先使用对象组合,而不是继承”。

   ISP接口分离原则。比如比如会报警的门AlarmDoor不能只实现一个有open,close,alarm三个行为的接口,根据ISP原则不能把它们门各报警的接口混为一堂,不能让Alarm模块的变化引起了Door这个不同行为模块的变化,因此要把它们分离。分成二个不同的接口一个是Door接口, 一个是Alarm接口。
   继承表示的是(is-a)关系,接口实现表示的是拥有(like-a)的关系。比如会报警的门AlarmDoor因为它本质上是门,拥有报警的功能,所以就应当这么实现class AlarmDoor extends Door implements Alam;是一个(is-a)用继承表示;有一个(has-a)用组合表示。

“对扩展开放,对修改关闭”开-闭原则。

       SOLID:面向对象设计的五项原则 (是SRP单一职责原则、OCP开闭原则、LSP李式代换原则、ISP依赖反转原则和 DIP接口分离原则,首字符的缩写)

 

设计模式:

二个阶段的学习

 1.熟记多少种的设计模式,格式规范,最普通,最经典的用法。

 2.什么场合用,这是关键。

 

以下是为什么用此模式的解释:

一、state状态模式

     状态不同引起的行为的不一致。状态模式中, 一个状态对应一个状态子类, 每个状态子类实现父类提供的行为, 外界在创建状态引用类的同时,在引用类内部根据初始的参数值创建 对应的状态类,状态引用类和状态类本身是一体的,是强耦合关系,状态类的创建和初始化由状态引用类来管理是完全合理的,所在外部调用时只是调用一状态引用类的接口,它不关心状态引用类的内部实现,不去关心状态类的创建和切换。

 

二、strategy策略模式
   选择不同的算法但引起的结局一样。

   策略模式里,是为了实现某个行为而采取的不同策略,采取何种何种策略由外部条件决定。   

   与状态模式区别:状态模式是随着状态的变化,做同样的行为,但结果是不一样的(如:银行不同级别信用卡用户,可以透支的金额是不一致的);策略模式是指做同样的行为,产生同样的结果,但选择的策略、实现方式是不一致的(如用不同的方式上传图片,用不同的算法压缩文件,用不同的图形方式展示相同的数据变化)。其实它们本来就是不一样的运用场景,本没有什么可比性。

 

三、Builder模式

   Builder模式用于创建复杂对象。创建方式和组件创建的分离。(比如车子的组装,包括方向盘,轮子,发动机)

 

 

 

五、适配器模式adapter

   先有二个相似的接口,为了把二个接口整理成同一个接口,而需要用到适配器模式。

六、brigde模式

  有二个(或多个)变化角色的不同组合实现M*N个对象,为了不用M*N个子类而是通过为M+N个类动态组合来实现,需要用到桥模式。

 

七、proxy模式

只对原有接口进行了少许的改变和控制。这时需要用到proxy模式(经典的权限控制)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值