1.一些基础
1.1 类与实例
- 类具有相同的
- 属性和功能的对象的抽象的集合。
- 实例是真实的对象。
- 实例化创建一个实例的过程,new一个对象。
1.2 封装,继承,多态
是面向对象三大特性。
面向对象,考虑封装、继承、多态把程序的耦合度降低,使得程序更加灵活,已修改,易复用。
第一章 简单工厂模式
业务封装:业务逻辑和界面逻辑分开。
1、模式内容
以计算器实现为例:
- 编写界面逻辑类调用业务逻辑类。
- 定义工厂类,通过页面逻辑类中传值,工厂实例化出合适的对象。(通过多态返回父类的方式实现)
- 实现业务逻辑类:先抽象得到父类(操作类),再编写具体实现类继承父类并重写计算方法。
简单工产模式
页面逻辑类,调用工程类,传值让工厂类判断实例化对象。
工厂类,依赖具体运算实现类。
运算类,是所有具体运算类(如加减乘除)的父类。
其实是解决了对象的创建问题。通过工厂来选择具体实例化的类,创建出合适的对象。
第二章 策略模式
策略模式:定义了算法家族,分别封装起来,让它们直接之间可以相互替换。
策略模式封装了变化点。
2、 策略模式
客户端,调用上下文,传入不同实例化对象,让上下文实现不同策略。
上下文(Context): 维护对一个Strategy的引用。根据不同的策略,获得不同的结果。
抽象策略类,(从具体策略中抽取,是具体策略类的父类)
具体策略类:继承抽象策略类,实现具体算法。
3、策略模式和简单工厂模式的不同点
简单工程模式
是创建式模式,实质是由一个工厂类根据传入的参数,动态决定应该创建并且返回哪一个产品类(这些产品类继承自一个父类或接口)的实例。
主要用于创建对象的选择上。 假如新添了产品类就得修改工厂类,这样就会违反开闭原则。
策略模式
是行为型模式,定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。通过选择对应的策略类,作为参数传到Content类里,在运行时配置对应的算法。
在一段代码里,使用了逻辑控制(if-else,swich-case)来决定算法,算法有相似的方法和函数,就可以选择策略模式。
运行时,两者都是通过传入参数进行配置,简单工厂模式则是选择创建出需要的对象,而策略模式则是配置出需要的行为算法。一个是对象创建,另一个是行为算法的替换。
第三章 单一职责模式
单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。
解释:如果一个类职责过多,相当于把这些职责耦合在一起。一个职责的可能会削弱或者一直这个类完成其职责的能力。
软件设计要做的是,发现职责并把那些职责相互分类。 如果有多余一个的动机去改变一个类,那么这个类就具有多于一个的职责。
举例:
游戏中,界面和游戏逻辑分割开。
第四章 开放-闭合原则
开放-闭合原则:软件实体(类、模块、函数等等)可扩展,但不可修改。即,开放扩展,封闭修改。
如果遇到新需求,该程序是新增代码而不是修改代码。如果修改代码就要考虑重构,抽象。(抽象只抽取频繁变化的)。
第五章 依赖倒转原则
A、高层模块不应该依赖低层模块,两个都应该依赖抽象。
B、抽象不应该依赖细节,细节应该依赖抽象