摘要: 1.定义:保证一个类仅有一个实例,并提供一个全局访问点。 2.类型:创建型 3.适用场景:想确保任何情况下都绝对只有一个实例。 4.优点:在内存里只有一个实例,减少了内存开销; 可以避免对资源的多重占用; 设置全局访问点,严格控制访问。 5.缺点:没有接口,扩展困难 6.重点:私有构造器、线程安全、 阅读全文
posted @ 2019-01-06 14:43 逢春 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1.定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示; 用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道。 2.类型:创建型 3.适用场景:如果一个对象有非常复杂的内部结构(很多属性);想把复杂对象的创建和使用分离。 4.优点:封装性好,创建和使用分离 阅读全文
posted @ 2019-01-06 14:15 逢春 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1.定义:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口是,无须指定它们具体的类2.类型:创建型3.适用场景:客户端(应用层)不依赖于产品类实例如何被创建、实现等细节; 强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码; 提供一个产品类的库,所有的产品以同样的接口 阅读全文
posted @ 2019-01-06 14:00 逢春 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1.定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 2.类型:创建型 3.适用场景:创建对象需要大量重复的代码,客户端(应用层)不依赖于产品类的实例如何被创建、实现等细节, 一个类通过其子类来指定创建哪个对象 4.优点:用户只需要关心所需产 阅读全文
posted @ 2019-01-01 17:31 逢春 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 1.定义:有一个工厂对象决定创建出哪一种产品类的实例。 2.类型:创建型,但不属于GOF23种设计模式 3.适用场景:工厂类负责创建的对象比较少,客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心 4.优点:只需要传入一个正确的参数,就可以获取你所需要的对象而无须知道其创建细节 阅读全文
posted @ 2019-01-01 17:04 逢春 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1.定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的 2.聚合has-A和组合contains-A 3.优点:可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少 4.思考:何时使用合成/聚合、继承?聚合has-A、组合contains-A、继承is-A 阅读全文
posted @ 2019-01-01 16:19 逢春 阅读(927) 评论(0) 推荐(0) 编辑
摘要: 1.定义:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2, 使得以T1定义的所有程序P在所有的对象o1都替换成o2时, 程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 2.定义扩展:一个软件实体如果适用一个父类的话,那一定适用于其子类, 所有引用父类的地方必须能透明地使用其子 阅读全文
posted @ 2019-01-01 15:58 逢春 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 1.定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则 2.尽量降低类与类之间的耦合 3.优点:降低类之间的耦合 4.强调只和朋友交流,不和陌生人说话。 朋友:出现在成员变量、方法的输入、输出参数中的类称为成员朋友类, 而出现在方法体内部的类不属于朋友类。 5.实例目录package 6. 阅读全文
posted @ 2019-01-01 14:29 逢春 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 1.定义:客户端不要依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。 2.注意适度原则,一定要适度 3.优点:符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。 4.实例目录package 5.实例UML类图 6.代码 阅读全文
posted @ 2019-01-01 14:07 逢春 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 1.定义:不要存在多于一个导致类变更的原因 2.一个类/接口/方法只负责一项职责 3.优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险 4.实例目录package 5.实例UML类图 6.代码 阅读全文
posted @ 2019-01-01 13:08 逢春 阅读(158) 评论(0) 推荐(0) 编辑