美文网首页
5期_程序六大设计原则的开闭原则-1

5期_程序六大设计原则的开闭原则-1

作者: 萧修 | 来源:发表于2023-10-08 01:00 被阅读0次

开闭原则概述

  • 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(使用方)。具体做法是用抽象来构建框架,用实现来扩展新的细节。
  • 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是在修改软件实体的源代码或者二进制代码的前提实现变化

问题:
怎么样的代码改动可以定义为扩展,怎么样的代码改动定义为为修改,怎样才算满足开闭原则

示例代码,图书价格,图书售卖

public interface IBook {
    String getName();

    int getPrice();

    String getAuthor();
}

public class NovelBook implements IBook{
private String name;
private int price;
private String author;

    public NovelBook(String name, int price, String author) {
        this.name = name;
        this.price = price;
        this.author = author;
    }

    public String getName() {
        return name;
    }

    public int getPrice() {
        return price;
    }

    public String getAuthor() {
        return author;
    }
}

图书售卖

import java.util.ArrayList;

public class BookStore {

    private final static ArrayList<IBook> bookList = new ArrayList<IBook>();

    static  {
        bookList.add(new NovelBook("天龙八部",3200,"金庸"));
        bookList.add(new NovelBook("巴黎圣母院",5600,"雨果"));
        bookList.add(new NovelBook("战争和和平",3600,"托尔斯泰"));
        bookList.add(new NovelBook("红楼梦",4500,"曹雪芹"));
    }

    public static void main(String[] args) {

        System.out.println("图书记录如下");

        for (IBook iBook:bookList) {
            System.out.println("书籍名称:" + iBook.getName() +
                    "\t书籍作者" + iBook.getAuthor() +
                    "\t书籍价格" + iBook.getPrice()/100 + "¥元");
        }
    }
}

如果售卖对图书扩展,价格高于40元以上打0.8折,40元下打0.9折。

第一:改动源代码,违背开闭原则。会影响原来价格
第二:对图书类扩展

public class NovelOffBook extends NovelBook{
    public NovelOffBook(String name, int price, String author) {
        super(name, price, author);
    }
    
    @Override
    public int getPrice() {
        int price = super.getPrice();
        int offPrice = 0;
        if (price < 4000) {
            offPrice = price * 90 / 100;
        } else  {
            offPrice = price * 80 / 100;
        }
        return  offPrice;
    }

}

相关文章

  • 设计模式六大原则

    设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改...

  • 设计模式原则

    设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭...

  • 开闭原则

    个人博客原文:开闭原则 设计模式六大原则之六:开闭原则。 简介 姓名 :开闭原则 英文名 :Open Closed...

  • 设计模式

    设计模式之六大原则 1,开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭,...

  • Java设计模式目录

    设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭...

  • 设计模式的六大原则

    设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭...

  • JAVA设计模式的最佳实践

    设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在...

  • 六大设计原则 - 开闭原则【Open Close Princip

    六大设计原则 单一职责原则 里式替换原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则 开闭原则 定义: So...

  • iOS开闭原则和替换原则

    什么叫开闭原则? 六大模式设计原则之一的开闭原则是比较重要的,开闭原则其实就是“抽象构建框架,实现扩展细节...

  • 习惯性废话

    传说中设计模式有六大原则: 1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修...

网友评论

      本文标题:5期_程序六大设计原则的开闭原则-1

      本文链接:https://www.haomeiwen.com/subject/qotvbdtx.html