1.单一职责原则

2.开闭原则:抽象约束,封装变化
例如:矩形和圆类,需要获取它们的面积
// 面积计算器
class AreaCalculator
{
double area(Rectangle shape)
{
return shape.getWidth() * shape.getHeight();
}
}//此设计不利于扩展,可设计一个shape接口类实现计算面积

优化:
class shape
{
double getArea();
}
class juxing:public shape

3.里氏替换原则:关于继承

例如:企鹅、鸵鸟和几维鸟从生物学的角度来划分,它们属于鸟类;但从类的继承关系来看,由于它们不能继承“鸟”会飞的功能,所以它们不能定义成“鸟”的子类。同样,由于“气球鱼”不会游泳,所以不能定义成“鱼”的子类;“玩具炮”炸不了敌人,所以不能定义成“炮”的子类等。

对于正方形和长方形最好的做法是再添加一个父类,他们同时继承自这个父类。

对此修正方法是取消原来的继承关系,重新设计它们之间的关系

4.依赖倒置原则
例如:商店与顾客,顾客从不同的商店购物
class customer
{
void shopping (711shop shop){shop.sell}}
}//此写法不利于扩展
优化:设置统一接口类shop,增加新的shop则只需要继承shop类即可
class customer
{
void shopping (shop shop){shop.sell}
}