设计模式(赛马娘的の战术策略)

(✪▽✪)曼波~~~~!设计模式就像赛马娘的战术策略哦~ 让我们用可爱的方式冲刺吧!(≧∇≦)ノ

🎠曼波设计模式思维导图:

🍰详细说明工厂模式的类型(简单工厂、工厂方法、抽象工厂)及其使用场景
曼波觉得工厂模式就像蛋糕店运营呢!(๑˃̵ᴗ˂̵)و

// 简单工厂(全能蛋糕师傅)
class CakeFactory {
    public static Cake createCake(String type) {
        return switch(type) {
            case "草莓" -> new StrawberryCake();
            case "巧克力" -> new ChocolateCake();
            default -> throw new IllegalArgumentException();
        };
    }
}

// 工厂方法(分店专属师傅)
interface CakeShop {
    Cake createCake();
}
class StrawberryShop implements CakeShop {
    public Cake createCake() { return new StrawberryCake(); }
}

// 抽象工厂(品牌连锁店)
interface DessertFactory {
    Cake createCake();
    IceCream createIceCream();
}
class PremiumFactory implements DessertFactory {
    public Cake createCake() { return new GoldCake(); }
    public IceCream createIceCream() { return new CaviarIceCream(); }
}

适用场景对比表:

类型优点使用场景
简单工厂快速实现产品类型少且固定
工厂方法符合开闭原则需要扩展新产品类型
抽象工厂保证产品兼容性需要创建相关产品族

🕶️代理模式有哪些类型,在 Spring 框架中是如何应用代理模式的?
哦呜(°ロ°)!代理模式就像明星经纪人哦!Spring中的代理超有趣~

// 简单工厂(全能蛋糕师傅)
class CakeFactory {
    public static Cake createCake(String type) {
        return switch(type) {
            case "草莓" -> new StrawberryCake();
            case "巧克力" -> new ChocolateCake();
            default -> throw new IllegalArgumentException();
        };
    }
}

// 工厂方法(分店专属师傅)
interface CakeShop {
    Cake createCake();
}
class StrawberryShop implements CakeShop {
    public Cake createCake() { return new StrawberryCake(); }
}

// 抽象工厂(品牌连锁店)
interface DessertFactory {
    Cake createCake();
    IceCream createIceCream();
}
class PremiumFactory implements DessertFactory {
    public Cake createCake() { return new GoldCake(); }
    public IceCream createIceCream() { return new CaviarIceCream(); }
}

Spring代理小秘密:

  • 默认使用JDK代理(实现接口时)
  • 使用CGLIB需要设置@EnableAspectJAutoProxy(proxyTargetClass = true)
  • AOP切面就像给方法穿上了代理盔甲 (≧ω≦)/

✨当你在项目中使用设计模式时,如何确保遵循设计原则?
曼波觉得遵循设计原则就像保持赛马体型管理!(๑•̀ㅂ•́)و✧

SOLID原则检查表:

实战技巧:

  • 每周代码复查时用原则当检查表
  • 使用设计模式图谱做决策(附曼波手绘参考):

    [需求] --> [原则匹配] --> [选择模式]
        例如:需要解耦对象创建 --> 工厂模式
        需要增强对象功能 --> 装饰器模式
    
  • 重构三问:
    1. 这个模式会让代码更简单吗?
    2. 是否符合最少知识原则?
    3. 后续扩展会更容易吗?

(✪▽✪)曼波~~ 备考小贴士:

  • 工厂模式面试要画UML类图对比
  • 代理模式要能手写JDK动态代理代码
  • 设计原则问题要结合项目经历回答
  • 可以说:"在我的XXX项目中,通过应用工厂方法模式,解决了XXX问题..."

需要曼波用奶茶店的例子再说明装饰器模式吗?(๑¯◡¯๑) 随时召唤哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值