java设计模式

一.工厂模式

/**
 * 工厂设计模式
 *      将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
 *
 *      1.简单工厂模式  采用if或者switch 分别获取不同的实现类
 *      2.多方法静态工厂 采用多个静态方法,分别获取不同的实现类
 *      3.工厂方法模式  采用多个类实现,获取不同的实例
 */

二,抽象工厂模式

/**
 * 抽象工厂模式
 *      提供一个创建一系列的相关的或者依赖的对象的接口,无需指定它们的具体实现类,具体的实现分别在子类工厂中产生。
 *  AbstractFactory
 *          getFactoryA
 *          getFactoryB
 *
 *   FactoryA extends AbstractFactory
 *          getInterfaceA-implementsA-1 返回具体实现类
 *          getInterfaceB-implementsA-1 返回具体实现类
 *
 *   FactoryB extends AbstractFactory
 *          getInterfaceA-implementsA-2 返回具体实现类
 *          getInterfaceB-implementsB-2 返回具体实现类
 *
 *   FactoryProducer  这个可以省去 
 *          getAbstractFactory (A or B) 判断获取哪个具体的工厂类
 *
 *   InterfaceA
 *          implementsA-1
 *          implementsA-2
 *          implementsA-3
 *
 *   InterfaceB
 *          implementsB-1
 *          implementsB-2
 *          implementsB-3
 */

三.单例模式

/**
 * 单例模式
 *      在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;
 *      为了防止在外部对其实例化,将其构造函数设计为私有;在单例类内部定义了一个Singleton类型的静态对象,
 *      作为外部共享的唯一实例。
 *
 *      1.饿汉式
 *      2.懒汉式
 *      3.静态内部类
 *      
 *      参考: https://www.cnblogs.com/kuoAT/p/6725808.html
 */

四.桥接模式

/**
 * 桥接模式
 *      将抽象部分与实现部分分离,可以独立的变化! (两个维度的变化)
 *      我理解的是一种类或者接口中有一些批量的有相同特征的操作,假如使用继承的方式的话就会出现很多继承关系的类
 *
 *      例如
 *      Person--->
 *                  Student---->
 *                              WalkStudent
 *                              BicycleStudent
 *                              CarStudent
 *                              ........
 *                  Teacher---->
 *                              WalkTeacher
 *                              BicycleTeacher
 *                              CarTeacher
 *                              ........
 *                  Worker---->
 *                              WalkWorker
 *                              BicycleWorker
 *                              CarWorker
 *                              ........
 *                  .........
 *    假如有n种Person的继承,有x种交通方式出门 ,那么就会有 n+n*x+1 个实现类了
 *
 *    采用桥接的方式的话如下
 *
 *    Person(Vehicle) 传入一个交通工具的实现类
 *              ↑   ---------->
 *            注│        Student--->出门调用传入的Vehicle的方法
 *            入│        Teacher--->出门调用传入的Vehicle的方法
 *              │        Worker--->出门调用传入的Vehicle的方法
 *    Vehicle ---->
 *              WalkVehicle    走路实现
 *              BicycleVehicle  骑自行车
 *              CarVehicle     开车实现
 *
 *     采用上述的方式 就会有 n+x+1 个类了
 */

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值