一、工厂模式
1、就是把所有的类交给一个类(命名为创建类)进行创建 。
2、创建类通过构造方法传入的参数进行判断创建哪个类
二、单例模式
1、就是在类中就把自己new出来了
2、通过一个static 方法来获取自己new出来的对象并赋值
三、建造者模式
1、就是在类里面建一个内部类
2、对内部类进行赋值的时候返回this,最后赋值完成之后进行new 一下
3、另外 菜鸟教程的 跟这个差不多 但是贼复杂 用的list 不如这种!!!!

//建造者代码
public class Computer {private final String cpu;//必须private final String ram;//必须private final int usbCount;//可选private final String keyboard;//可选private final String display;//可选private Computer(Builder builder){this.cpu=builder.cpu;this.ram=builder.ram;this.usbCount=builder.usbCount;this.keyboard=builder.keyboard;this.display=builder.display;}public static class Builder{private String cpu;//必须private String ram;//必须private int usbCount;//可选private String keyboard;//可选private String display;//可选public Builder(String cup,String ram){this.cpu=cup;this.ram=ram;}public Builder setUsbCount(int usbCount) {this.usbCount = usbCount;return this;}public Builder setKeyboard(String keyboard) {this.keyboard = keyboard;return this;}public Builder setDisplay(String display) {this.display = display;return this;}        public Computer build(){return new Computer(this);}}//省略getter方法
}
//此下为调用
Computer computer=new Computer.Builder("因特尔","三星").setDisplay("三星24寸").setKeyboard("罗技").setUsbCount(2).build();

四、原型模式(创建重复的对象)
(我感觉是就把对象放数组里调用 【小声逼逼】)
1、创建一个实现 Cloneable 接口的抽象类。
2、对抽象类实例化
3、关键类 里面放一个list 写个方法把抽象类实例化的东西放入数组
4、在关键类写个方法直接调用就可以了


//抽象类。
public abstract class Shape implements Cloneable {private String id;protected String type;abstract void draw();public String getType(){return type;}public String getId() {return id;}public void setId(String id) {this.id = id;}public Object clone() {Object clone = null;try {clone = super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return clone;}
}//关键类
import java.util.Hashtable;public class ShapeCache {private static Hashtable<String, Shape> shapeMap = new Hashtable<String, Shape>();public static Shape getShape(String shapeId) {Shape cachedShape = shapeMap.get(shapeId);return (Shape) cachedShape.clone();}// 对每种形状都运行数据库查询,并创建该形状// shapeMap.put(shapeKey, shape);// 例如,我们要添加三种形状public static void loadCache() {Circle circle = new Circle();circle.setId("1");shapeMap.put(circle.getId(),circle);Square square = new Square();square.setId("2");shapeMap.put(square.getId(),square);Rectangle rectangle = new Rectangle();rectangle.setId("3");shapeMap.put(rectangle.getId(),rectangle);}
}

五、适配器模式
1、创建原本的类,跟我们需要适配的接口
2、创建类(适配器类,继承了被适配类,同时实现标准接口)
3、实例化接口的时候其实掉的还是适配接口的方法

几句话总结21种设计模式。相关推荐

  1. 程序员必备的21种“设计模式之道”!

    设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式的目的就是为了重用代码.让代码更容易被他人理解.保证代码可靠性.欢迎小伙伴们收藏关注,持续分享更多优质干货! ...

  2. 21种设计模式理论版

    1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了.麦当劳 ...

  3. iOS 21种设计模式之工厂模式

    原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=list 我的stackoverflow 感谢 感谢<Pro Objective-C ...

  4. 三句话巧记 23 种设计模式

    大家都知道 23 种设计模式,其中又可以分成三类,创建型模式,结构型模式,行为型模式.但是总是在实际应用中忘记了,当具体看到一些代码的时候也想不起来具体对应的是哪种设计模式,对经常重构的代码人员来说是 ...

  5. 21 句话入门机器学习

    [编者按]这是一篇关于机器学习工具包Scikit-learn的入门级读物.对于程序员来说,机器学习的重要性毋庸赘言.也许你还没有开始,也许曾经失败过,都没有关系,你将在这里找到或者重拾自信.只要粗通P ...

  6. 21句话入门机器学习

    这是一篇关于机器学习工具包Scikit-learn的入门级读物.对于程序员来说,机器学习的重要性毋庸赘言.也许你还没有开始,也许曾经失败过,都没有关系,你将在这里找到或者重拾自信.只要粗通Python ...

  7. 能打开人心结的21句话

    能打开人心结的21句话 2011-05-1916:23:46| 分类: 默认分类 阅读12 评论0 字号:大中小 订阅 1. 过错是暂时的遗憾,而错过则是永远的遗憾!不要害怕过错而错过-- ­ 2.宁 ...

  8. 从键盘输入两个数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常, 而且无论在哪种情况下,“程序执行结束”这句话都会在控制

    编写应用程序,从键盘输入两个数作为除数和被除数.要求程序中捕获NumberFormatException 异常和ArithmeticException 异常, 而且无论在哪种情况下,"程序执 ...

  9. 23 种设计模式的通俗解释

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源 | 肥朝 01 工厂方法 追 MM 少不了请吃饭了,麦 ...

最新文章

  1. C++中struct的使用
  2. 虚拟机下Linux安装图解之二:虚拟机的创建
  3. 考前自学系列·计算机组成原理·中央处理器知识点
  4. 设计模式C++实现(4)——单例模式
  5. Kubernetes探针踩坑记
  6. win10家庭版 安装docker并成功使用
  7. sublime生产力提升利器
  8. Elasticsearch的javaAPI之percolator
  9. 新华三(H3C)校园招聘技术类笔试题2019
  10. C#海康解码器上大屏代码事例
  11. 我的第一个项目催生的前世今生(LAIS,LKJ,DTU,记录器)
  12. esxi主机,提示“当前主机无管理网络冗余“报警。
  13. postman使用之Tests使用
  14. npm 报错 426 Upgrade Required
  15. java.time.format.DateTimeParseException: Text ‘xxxx-xx-xx xx:xx:xx‘ could not be parsed at index 10
  16. echarts实现中国地图和各省市地图
  17. graphpad图片怎么导出矢量图_Graphpad Prism 8如何绘制生存曲线
  18. FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset 错误解决
  19. 工作流(Workflow)简介
  20. c#加入json库引用,添加JSON包引用;新到Java

热门文章

  1. phantomjsjava_Java利用Phantomjs实现生成图片的功能
  2. 十二、Powerbi绘制人员地区分布图和后期学习
  3. 七十八、 回溯法解决八皇后问题
  4. 微信小程序学习笔记(四)
  5. 隐马尔科夫模型 概念(上)
  6. USC提出拟牛顿法深度学习优化器Apollo,效果比肩SGD和Adam
  7. Transformer也能生成图像,新型ViTGAN性能比肩基于CNN的GAN
  8. 每周一起读 × 招募 | WWW 2019:基于层次化强化学习的多源搜索展示优化
  9. Numpy学习-数组的索引
  10. 06 | 全局锁和表锁 : 给表加个字段怎么有这么多阻碍