面向对象编程并不是类越多越好,类的划分是为了封装。分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。
代码的要求:可维护性(修改代码很方便,局部改一点,其实也是解耦的体现)、可复用(重复使用)、可扩展(增加新功能不用修改原有代码);
====================================================
工厂模式:
是为了解决要实例化谁,如何去实例化对象的问题。
用一个单独的类来做这个创造实例的过程,这就是工厂。
运用到了多态的特性。
====================================================
面对业务算法的时常变动,使用简单的工厂模式也许不是最好的解决方法,因为每次改变算法策略都需要重新改写代码并重新编译部署是一件很麻烦的事。
策略模式就应运而生,策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,次模式让算法的变化,不会影响到使用算法的客户。
策略模式(Strategy):
环境(Context):持有一个Strategy类的引用
抽象策略(Strategy)角色:抽象角色,通常由一个接口或抽象类实现。给出所有的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色:包装了相关的算法和行为;
应用场景:一些算法的封装,让算法的改变不影响使用者;
三层开发:表现层Presentation Layer、业务逻辑层Business Logic Layer、数据访问层Data Access Layer;
三层只是大的方向上分层,每个层中都有可能再细分为多个层次和结构。
迪米特法则:最少知识原则,简单地说,就是如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则还是在讲如何减少耦合的问题,类之间的耦合越弱,越有利于复用。处在一个弱耦合的类被修改,不会对有关系的类造成波及,也就是说,信息的隐藏促进了软件的复用。
门面模式:要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统易于使用。