设计模式(六)—— 适配器模式、建造者模式/生成器模式、命令模式、工厂模式

发布时间:2026/5/27 10:27:10

设计模式(六)—— 适配器模式、建造者模式/生成器模式、命令模式、工厂模式 一、适配器模式理解①很简单可以直接理解成“充电器转接头”。理解②asList源码的注解里将其比喻为一个bridge如下图理解③我通过调用第一个API得到一个返回然后这个返回需要作为第二个API的参数但是二者类型不同所以我就需要一个适配器。在调用第一个API和调用第二个API之间调用一下这个适配器给我转换一下。编程变得如此简单写一个便于理解的小demopublic 适配器方法(OldObject oldObj){ NewObject newObj new NewObject(); newObj.setName(_weChat_id_oldObj.getName()); newObj.setTranCode(WPSoldObj.getTranCode()); newObject.setXxx(... oldObj.getXxx()); .....; .....; return newObj; } main(){ //1.API1返回一个陈旧的对象 OldObject oldObj API1(); //2.转换一下 NewObject newObj 适配器方法(oldObj); //3.就可以作为API2的入参了 API2(newObj); }二、建造者模式/生成器模式先简单记一下以后再来认真写还是造房子那个例子一个房子分为①打地基 ② 砌墙 ③封顶三步如果不用设计模式去写的话。就是一个超类然后多个子类继承超类去重写但是这样有两个缺点1产品和建造的过程是高度耦合的针对这个问题单独定义product类以组合的方式放在Builder超类的成员变量中2 客户端main方法调用的时候必须了解建房的步骤要了解应该先打地基再。。针对这个问题出现了Director指挥者知道建房子的步骤就行了客户端调用的时候直接new一个指挥者客户端啥都不用知道三、工厂模式世间所有设计模式都是同一个设计模式——识别变化点并隔离变化点↓如何封装没有什么是加一层不能解决的。加的这一层就是工厂其次还是要重申一遍23个设计模式可以分成三大类创建型模式、结构型模式、行为型模式。本次学的工厂类属于创造型模式你要有了这个概念才知道我们下面是在研究如何更好的构造对象。简单工厂模式就是不管什么车都放到一个工厂里去做工厂模式就是一个车型一个工厂如果有新型车就再开一个新工厂。真实开发中二者没有优劣之分都能用如果你的产品少并且业务基本上不改那完全可以用简单工厂模式呀。3.1 简单工厂模式由工厂类根据传入的参数决定创建哪种具体的通知对象。// 抽象产品汽车 abstract class Car { public abstract void drive(); } // 具体产品轿车 class Sedan extends Car { Override public void drive() { System.out.println(驾驶轿车舒适平稳); } } // 具体产品SUV class SUV extends Car { Override public void drive() { System.out.println(驾驶SUV视野开阔); } } // 简单工厂汽车工厂 class CarFactory { public static Car createCar(String type) { if (sedan.equalsIgnoreCase(type)) { return new Sedan(); } else if (suv.equalsIgnoreCase(type)) { return new SUV(); } else { throw new IllegalArgumentException(未知车型: type); } } } // 客户端 public class SimpleFactoryExample { public static void main(String[] args) { Car car1 CarFactory.createCar(sedan); car1.drive(); Car car2 CarFactory.createCar(suv); car2.drive(); } }但是我们要新增一个新车型的话还是要打开工厂类去新增里面的if-else那就再继续隔离变化点——继续拆3.2 工厂模式定义一个抽象工厂将具体创建哪款车的决定延迟到子工厂中。每个车型都有自己专属的工厂。// 抽象产品汽车 abstract class Car { public abstract void drive(); } // 具体产品轿车 class Sedan extends Car { Override public void drive() { System.out.println(驾驶轿车舒适平稳); } } // 具体产品SUV class SUV extends Car { Override public void drive() { System.out.println(驾驶SUV视野开阔); } } // 抽象工厂汽车工厂创建者 abstract class CarFactory { // 工厂方法由子类决定生产哪种车 public abstract Car createCar(); // 模板方法造车 试驾 public void testDrive() { Car car createCar(); System.out.print(新车下线 - ); car.drive(); } } // 具体工厂轿车工厂 class SedanFactory extends CarFactory { Override public Car createCar() { return new Sedan(); } } // 具体工厂SUV工厂 class SUVFactory extends CarFactory { Override public Car createCar() { return new SUV(); } } // 客户端 public class FactoryMethodExample { public static void main(String[] args) { CarFactory sedanFactory new SedanFactory(); sedanFactory.testDrive(); // 生产轿车并试驾 CarFactory suvFactory new SUVFactory(); suvFactory.testDrive(); // 生产SUV并试驾 } }

相关新闻