设计原则

Posted lishuaiqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计原则相关的知识,希望对你有一定的参考价值。

1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起.------分离变化与不变化的部分,框架实际就是把业务与其余不变的代码进行分离,好让程序员更好的进行 if  else 操作.

 

2.针对接口编程,不针对实现编程.------面向抽象,不面向具体的实现,代码如果依赖于具体的实现可拓展性比较差,牵一发而动全身.

java分为编译期和运行期,在编译期如果编写的代码依赖与具体的实现,后期拓展功能会频繁的更改代码.

但是当编译期依赖于抽象的时候,在运行期会根据传入具体的类型执行代码,所以不需要频繁更改代码.

举个例子:

定义一个接口Animal,会发出声音

public interface Animal 
    void makeSound();

定义两个具体的类Cat,Dog,实现接口Animal

public class Cat implements Animal

    @Override
    public void makeSound() 
        System.out.println("喵喵喵");
    

public class Dog implements Animal

    @Override
    public void makeSound() 
        System.out.println("汪汪汪");
    
    

编写测试类

public class AnimalTest 
    
    public static void main(String[] args) 
        Cat cat = new Cat();
        test(cat);
    
    private static void test(Cat cat) 
        cat.makeSound();
    

可以看到,如果test类依赖于具体的cat类型,如果这时候需要传入dog参数,就需要在改写一遍代码如:

public class AnimalTest 
    
    public static void main(String[] args) 
        Cat cat = new Cat();
        Dog dog = new Dog();
        test(cat);
        test(dog);
    
    private static void test(Cat cat) 
        cat.makeSound();
    
    private static void test(Dog dog) 
        dog.makeSound();
    

如果后期在有别的动物出现,就需要不停的重载test方法,其实我们这边关心的只是动物发出的声音,完全可以用Animal类来替代具体的类,比如

public class AnimalTest 
    
    public static void main(String[] args) 
        Cat cat = new Cat();
        Dog dog = new Dog();
        test(cat);
        test(dog);
    
    private static void test(Animal animal) 
        animal.makeSound();
    
//    private static void test(Cat cat) 
//        cat.makeSound();
//    
//    private static void test(Dog dog) 
//        dog.makeSound();
//    

这边参数直接声明成Animal接口,在运行期根据传入的具体类型来执行子类的实现方法,这种操作也叫向上转型.

这样实现的话代码就比较简洁,而且代码拓展性与可维护性也比较好,就算在来100只动物,test类不需要更改.

 

3.多用组合,少用继承. ------ 继承会强制子类继承某些不需要的方法或者实现,但是组合的话可以自由添加与删除.

 

以上是关于设计原则的主要内容,如果未能解决你的问题,请参考以下文章

面向对象设计原则 面向对象设计原则都有哪些

面向对象设计的三个原则

软件设计原则都有哪些

C#软件设计——小话设计模式原则之:开闭原则OCP

设计模式六大原则

设计模式六大原则