OO(面向对象)的设计模式

本文深入探讨了面向对象设计模式,包括策略模式、观察者模式、装饰者模式、工厂模式等14种常见模式,阐述了它们的定义、应用场景及核心思想。设计模式是面向对象编程中的经验总结,能帮助开发者设计出更弹性、可复用和可维护的系统。
摘要由CSDN通过智能技术生成

为何学习设计模式:

      知道OO(面向对象)的基础概念(封装、抽象、继承、多态),不等于能够自动设计出弹性的、可复用的、可维护的系统。设计模式是人们在不断运用OO所总结出来的经验。

     设计模式比库的等级更高。设计模式告诉我们如何组织类和对象以解决某种问题。

设计模式的三原则:

1. 面向接口编程,而非实现;

2. 多用组合,少用继承;

3. 高内聚、低耦合;

一、策略设计模式的定义

策略设计模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

案例:Duck

二、观察者模式

观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

三、装饰者模式

装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

关键点:装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的。

四、工厂模式

所有的工厂模式都是用来封装对象的创建。

4.1 简单工厂模式

简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。

/**
 * 简单工厂
 * @Date 2019-06-02
 * @Author lifei
 */
public class SimplePizzaFactory {

    /**
     * 创建pizza
     * 简单工厂, 这样做,制作比萨的代码绑定到PizzaStra中,没有弹性
     * @param type
     * @return
     */
    public Pizza createPizza(String type){
        Pizza pizza = null;
        if (type.equals("cheese")){
            pizza = new CheesePizza();
        }else if (type.equals("greek")){
            pizza = new GreekPizza();
        }else if (type.equals("pepperoni")){
            pizza = new PepperoniPizza();
        }
        return pizza;
    }
}

/**
 * Factory pattern
 * @Date 2019-06-02
 * @Author lifei
 */
public class PizzaStore {

    SimplePizzaFactory factory;

    public PizzaStore(SimplePizzaFactory simplePizzaFactory) {
        this.factory = simplePizzaFactory;
    }
    /**
     * 制作pizza
     * @return
     */
    public Pizza orderPizza(String type){
        Pizza pizza =null;
        // 使用简单工厂创建pizza
        /**
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值