开闭原则(OCP)
1 什么是开闭原则
一个软件实体应该对扩展开放,对修改关闭。这个原则是说,在设计一个模块的时候,可以在不修改的前提下被扩展。
2 怎样做到开闭原则
2.1.抽象化是关键
在java中,可以给出一个或者多个抽象java类和接口规定所有的具体类必须提供的方法特征作为抽象层。这个抽象层预见了所有可能的扩展。从而满足了,对修改关闭
2.2.对可变性的封装原则(EVP)
找到一个系统的可变因素,将它封装起来,这就是对可变性的封装原则。这意味着以下两点:
2.2.1.可变性应当被封装到一个对象里。同一种可变性的不同表现意味着一个继承结构的具体子类
2.2.2.一种可变不应当与另一种可变混合在一起。继承结构最好不要超过两层。

工厂模式的几种形态
简单工厂模式:又称静态工厂方法模式
工厂方法模式:又称多态工厂模式
抽象工厂模式

简单工厂模式的引进

一个农场,销售各种水果,这个系统里需要描述下列水果
.葡萄 Grape
.草莓 Strawberry
.苹果 Apple
[img]http://dl.iteye.com/upload/attachment/501009/a8de29ac-ad3c-31fc-8ad2-039bf9df29d8.jpg[/img]

设计模式_简单工厂模式(Simple Factory)相关推荐

  1. Java设计模式之简单工厂模式(Simple Factory)

    [Java与模式]简单工厂模式(Simple Factory---吴义) 首先说明,Java与模式一系列的文章均是参考阎宏博士的<Java与模式>一书,加上自身的一些体会的探索,产生如下文 ...

  2. Net设计模式之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction)        简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实 ...

  3. 设计模式之简单工厂模式(Simply Factory)摘录

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  4. 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(四):图表库解决方案的改进,简单工厂模式的简化,简单工厂模式总结

    4 方案的改进 Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了" ...

  5. 一起学习设计模式--02.简单工厂模式

    工厂模式是最常用的一类创建型设计模式.我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式. 简单工厂模式是工厂方法模式的小弟,它不属于GoF 23种设计模式,但是在软件开发中应用也颇为频 ...

  6. 从零开始学设计模式(四):工厂模式(Factory Pattern)

    作者平台: | CSDN:blog.csdn.net/qq\_4115394- | 掘金:juejin.cn/user/651387- | 知乎:www.zhihu.com/people/1024- ...

  7. c++设计模式之简单工厂模式

    模拟场景 要求使用简单工厂模式设计一个可以创建不同几何形状(如矩形.圆形.三角形)的绘图工具,每个几何图形都具有绘制Draw()和擦除Erase()两个方法: UML类图 分析需求: 首先这个绘图工具 ...

  8. 设计模式之 - 简单工厂模式

    一.什么是简单工厂模式 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工厂模式中,一个抽 ...

  9. 设计模式的征途—2.简单工厂(Simple Factory)模式

    工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的"小弟",我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式, ...

最新文章

  1. Datawhale组队学习周报(第012周)
  2. numpy.power()
  3. C# 每月第一天和最后一天
  4. shell脚本初体验
  5. 现代程序设计 (课程设计中, 征求意见稿)
  6. 【转载】java中Date与String的相互转化
  7. 谈一下对c语言程序设计,谈《C语言程序设计》课程教学.doc
  8. Burpsuite工具使用
  9. 自学python能干些什么副业-用Python赚钱的5个方法,教你业余时间赚外快!
  10. 每次都错部分分怎么办,总是个别点TLE,WA
  11. HOG特征提取算法解析
  12. C语言课程设计-车辆信息管理系统
  13. 机器学习大牛李飞飞的电脑配置
  14. 深度学习框架有什么作用?
  15. Intent intent =new Intent(getActivity(),DeliverListActivity.class,Cannot resolve method'getActivity'
  16. php zend debugger_PHPStorm 与 Zend Debugger
  17. [C语言] 一维数组
  18. ad中按钮开关的符号_送给初学者电工最常用电气元件实物图及对应符号
  19. java math tan_Java Math tan() 使用方法及示例
  20. JQuery 控制 radio 只读

热门文章

  1. 使用腾讯轻量云搭建个人邮箱系统
  2. 刚刚,我们和ChatGPT聊了聊边缘计算
  3. 锐龙 7 7840HS 性能怎么样 r77840HS相当于什么水平级别
  4. Flutter 功能最全的JsonToDart工具
  5. linux逆向分析之ELF文件详解
  6. win10打开蓝牙_学会了这些win10快捷键,可以极大的提高你的工作效率
  7. 直播网站是怎么实现的
  8. win10系统图片显示缩略图
  9. 两组数据的偏差率_GWT测试报告 篇七十五:隐患难忽视,RIVAL 3 WIRELESS精准度LOD测试...
  10. SpringBoot程序排除@Configuration配置类