设计模式-2-LSP里氏替换原则
来源:互联网 发布:qq假红包软件 编辑:程序博客网 时间:2024/06/14 18:41
//: Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
/*
里氏替换原则LSP(Liskov Substitutin Principle)
只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误异常,使用者不用知道是父类还是子类
继承
优点:代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性
提高代码的重用性
子类形似父类,异于父类
提高代码的可拓展性
提高项目开放性
缺点:是侵入性的,只要继承,一定拥有
降低代码灵活性,必须拥有父类属性方法,子类多了约束
增强了耦合性。父类改变,必须考虑子类
例子,1例中的传入 Protrol的实现类
*/
//子类的前置条件必须与父类中被复写的方法的前置条件相同或更宽松
class Father {
func doSomeThing(dic:NSDictionary) -> [AnyObject]{
debugPrint("父类执行")
return dic.allValues
}
}
class Son: Father{
///参数不同,重载
func doSomeThing(dic: NSMutableDictionary) -> [AnyObject] {
debugPrint("子类执行")
return dic.allValues
}
///重写
// override func doSomeThing(dic: NSDictionary) -> [AnyObject] {
// debugPrint("子类重写")
// return dic.allValues
// }
}
class Test {
func test1(){
let mudic:NSMutableDictionary =NSMutableDictionary()
Son().doSomeThing(mudic)//子类执行
Father().doSomeThing(mudic)//父类执行
}
func test2(){
let dic:NSDictionary =NSDictionary()
Son().doSomeThing(dic)//父类执行 --》子类重写 override func doSomeThing
Father().doSomeThing(dic)//父类执行
}
}
let test = Test()
// test.test1()
test.test2()
- 设计模式-2-LSP里氏替换原则
- 设计模式原则—里氏替换原则(LSP)
- 设计模式六大原则(三)-- 里氏替换原则 ( LSP )
- Java 设计模式(十一) 里氏替换原则(LSP)
- 设计模式无限重读之里氏替换原则(LSP)
- [设计原则3] LSP 里氏替换原则
- 设计模式六大原则(2):里氏替换原则LSP(Liskov Substitution Principle)
- "围观"设计模式(2)--里氏替换原则(LSP,Liskov Substitution Principle)
- "围观"设计模式(2)--里氏替换原则(LSP,Liskov Substitution Principle)
- LSP(里氏替换原则)
- 里氏替换原则LSP
- LSP-里氏替换原则
- Liskov替换原则(LSP)LSPLiskov Substitution Principle(里氏替换原则) --- 设计模式原则
- IOS设计模式的六大设计原则之里氏替换原则(LSP,Liskov Substitution Principle)
- OO设计原则 OO设计的LSP里氏替换原则
- 设计模式之六大原则——里氏替换原则(LSP)
- 设计模式六大原则——里氏替换原则(LSP)
- 设计模式之六大原则——里氏替换原则(LSP)
- 继承《一》
- 设计模式——建造者
- ACM递推递归练习I 蟠桃记
- 动态规划问题
- MySQL查询相关
- 设计模式-2-LSP里氏替换原则
- git 常用命令
- 原来Github上的README.md文件这么有意思——Markdown语言详解
- 关于ERP
- 思维修炼——总论
- 实现一个操作集合的类
- 个人感悟
- 深入理解Java之垃圾回收
- QT学习笔记之QTableView设置属性的方法