设计原则·开闭原则

开闭原则的含义是对扩展开放,对修改关闭。
意思就是在遇到新的需求或者变动的时候,提倡对原代码扩展使其满足新的需求,不提倡修改原代码来达到目的。

一个项目不可能在开发完毕后就一成不变了,它总会有新的需求或者对老的需求进行更新。这样就要尽可能的遵从设计原则中的开闭原则,这个原则告诉我们,要尽量避免对原代码的修改,而是要根据新的需求,来扩展现有的代码达到系统完善的目的。

比如现在和金融挂钩的项目,多少会涉及资金方,来完成金融贷款等业务。起始设计的时候资金方很可能只有一两个,当新增资金方的时候,就添加一个资金方的实现,无需对金融贷款等业务进行修改,只需要在原代码的基础上进行扩张就能实现。

书籍接口

public interface IBook {
    public String getName();
    public String getAuthor();
    public int getPrice();
}

书籍接口实现

public class IBookImpl implements IBook{

    private String name;
    private String author;
    private int price;

    public IBookImpl(String _name, String _author, int _price) {
        this.name = _name;
        this.author = _author;
        this.price = _price;
    }

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public String getAuthor() {
        return this.author;
    }

    @Override
    public int getPrice() {
        return this.price;
    }
}

双十一书籍新增打折需求,只需要重写getPrice方法

public class Book extends IBookImpl{

    public Book(String name,String author,int price){
        super(name,author,price);
    }

    @Override
    public int getPrice() {
        int oldPrice = super.getPrice();
        int newPrice = 0;
        if (oldPrice <= 20){
            newPrice = oldPrice * 90 / 100 ;
        }else {
            newPrice = oldPrice * 50 / 100 ;
        }
        return newPrice;
    }
}

测试

public class BookStore {

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

    static {
        bookList.add(new Book("西游记","吴承恩",10));
        bookList.add(new Book("红楼梦","施耐庵",20));
        bookList.add(new Book("水浒传","罗贯中",50));
    }

    public static void main(String[] args) {
        for (Book book : bookList) {
            System.out.println("书籍名称: " + book.getName()
                    +"\t书籍作者: "+book.getAuthor()
                    +"\t书籍价格: "+book.getPrice());
        }
    }
}
书籍名称: 西游记	书籍作者: 吴承恩	书籍价格: 9
书籍名称: 红楼梦	书籍作者: 施耐庵	书籍价格: 18
书籍名称: 水浒传	书籍作者: 罗贯中	书籍价格: 25

优点
开闭原则提高了系统的可维护性和代码的重用性。
利用开闭原则进行开发,我们可以随时的对功能进行扩展,这样就提高了系统的灵活性和可维护性,还有就是在原代码不改动的情况下进行开发,增强了系统的稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值