设计原则
开闭原则
- 指系统对扩展开放,对修改关闭。
- 通过继承扩展,而不是修改已有业务。
依赖倒置原则
- 高层模块不应依赖底层模块,两者都应该依赖抽象。
- 抽象不应依赖细节,而细节应该抽象。
单一职责
- 一个类有且仅有一个导致其改变的原因。
接口隔离原则
- 将不同的业务抽象到不同的接口中。
迪米特法则(最少知道原则)
- 规定只和朋友通讯,而不和陌生人通讯。
里氏替换原则
- 子类可实现父类的抽象方法,不能覆盖父类非抽象方法。
- 子类可拥有属于当前的特有方法。
- 当子类重载父类方法时,方法前置条件【传入参数】要比父类宽松。
- 当子类重载父类方法时,方法后置条件【返回参数】要比父类严格。
复合复用原则
- 推荐首先使用组合方法构建实现,其次使用继承。
- 三种方式:
- is - 继承
- has - 注入【使用提供】
- contains - 拥有【类内部拥有】
总结
- 设计模式是前人在长期实践过程中,总结出的一套软件设计规范。
- 设计模式是一种设计思想,具体需结合实践情况做相应的取舍,而不是完全遵守设计原则。
- 设计模式提高系统可维护性,增加程序可扩展性,降低类之间耦合,提升代码可复用性。
工厂模式
- 工厂模式是属于设计模式中的创建型模式,将对象的创建封装在相应工厂中,客户端只需从工厂获取产品,无需知道产品的创建细节,符合设计原则中迪米特法则(最少知道原则)。
- 工厂模式实分为简单工厂、工厂方法及抽象工厂三种实现方式。
简单工厂
- 该实现方法相对简单,仅由一个工厂负责所有产品的创建,客户端只需提供产品名称便可获取到相应产品。
- 由于所有产品都在一个工厂创建,当产品增加且创建过程变得复杂时,工厂类变得臃肿且复杂,不便于后期维护。
- 该方式每当需求变更时,必须修改已有程序才能满足新产品创建,违反了开闭设计原则。
工厂方法
- 为每个产品定义一个用于创建该产品的工厂,客户端只需从指定产品工厂获取产品。
- 每个产品都需要定义对应的工厂,增加了系统复杂度。
抽象工厂
- 抽象工厂在工厂方法的基础上,对工厂进行了抽象,定义一个抽象工厂类,由子类负责产品的创建,符合依赖倒置原则。
- 当新增产品时需修改抽象工厂类,违反了开闭原则。
总结
- 简单工厂实现简单。
- 工厂方法为每个产品定义工厂类。
- 抽象工厂对工厂方法进行了改进,提倡接口编程。
标签:设计模式,原则,工厂,抽象,产品,父类,方法,复盘 来源: https://www.cnblogs.com/90909de0/p/15772024.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。