劣质代码产生的根源(1) 理论知识的匮乏(续)
1.面向对象编程(Object Oriented Programming)
面向对象编程把所有的事物都抽象为对象。即使虚拟的存在也要抽象为对象,比如:关系,状态;有些即使在客观世界中不被定义为对象的东西在面向对象的世界里也会被定义为对象,比如:行为,动作。
和面向过程编程强调:顺序、选择、循环不同,面向对象强调:包含、继承、实现、组合这些关系。面向对象的特点是:封装(Encapsulate)、多态(Polymophism)和继承(Inheritage)。
2.依赖注入(Dependency Injection)
当依赖是动态的时候,可以通过在外部配置依赖类的名称的方式,通过反射来将依赖逐步引入。依赖注入可以更好地解耦合,使得代码可以实现“热插拔”。
但是依赖注入的问题是,需要配置很多的XML文件。
依赖注入的另外一个名称叫做控制反转(Inversion of Control)
3.领域特定语言(Domain Specfic Language)
领域特定语言与面向对象不同,是为了解决某一特定领域的问题而产生的解决方案。下面是一些例子:
正则表达式(Regular Expression)、状态机(State Machine)、表达式树(Expression Tree)、表达式构造器(Expression Builder)、注解(Annotation)
等等。
4.设计模式(Design Pattern)
设计模式是由GoF根据长期工作经验总结的一套约定俗成的设计方法。每种模式都有一个名字,常用的23种设计模式。
状态模式(State)、策略模式(Strategy)、桥接模式(Bridge)、代理模式(Proxy)、中介模式(Mediator)、单例模式(Singleton)、工厂模式(Factory)、享元模式(Flyweight)、抽象工厂(Abstract Factory)、外观模式(Facade)、命令模式(Command)、观察者模式(Observer)、模板方法模式(Template Method)、适配器模式(Adapter)、解释器模式(Interpretor)、迭代模式(Iterator)、职责链模式(Chain of Responsibility)、组合模式(Composite)、装饰者模式(Decorator)、原型模式(Prototype)、备忘录模式(Memonto)、访问者模式(Visitor)