参考:http://www.cnblogs.com/eagle927183/p/3452810.html
1.开放-关闭原则:
尽量让设计的类做好后就不再去修改,而是增加扩展,修改关闭。
2.里氏替换原则:
定义1:如果对一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1所定义的程序P中在o1全都替换成o2时,程序的行为不发生任何变化,那么T2为T1的子类。
定义2:所有引用父类的地方都必须能够透明地使用其子类对象。
Employee *employee = [[Director alloc] init];//将所有父类出现的地方都替换成子类2[employee calculateSalary:@"张三"];3[employee release];
3.单一职责原则:就一个类而言,应该只有一个引起它变化的原因。
也许上面说的略微夸张,因为只要是稍微有iOS开发经验的朋友都知道,在iOS开发中,是采用MVC模式的,数据处理、封装放入model中,视图展示、操作放入view中,而controller只是负责将model提供的数据展示到view上去。从而保证各个模块各自独立、分工明确,容易维护。
4.狭义的迪米特法则定义:
也叫最少知识原则(LKP,Least Knowledge Principle)。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
5.依赖倒置原则:
类A直接依赖类B,假如需要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险
Director *director =[[Directoralloc] init];23director.strName =@"张三";45Manager *manager =[[Manageralloc] init];67manager.strName =@"李四";89SalaryManage *salaryManage =[[SalaryManagealloc] init];1011[salaryManage calculateSalary:director];1213[salaryManage calculateSalary:manager];1415[director release];1617[manager release];1819[salaryManage release];
6.隔离原则
一个类对另一个类的依赖应该建立在最小的接口上。A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类C来说不是最小接口,而类B和类D必须去实现它们不需要的方法。下面通过一个UML图来说明这种现象: