几句话总结21种设计模式。
一、工厂模式
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种设计模式。相关推荐
- 程序员必备的21种“设计模式之道”!
设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式的目的就是为了重用代码.让代码更容易被他人理解.保证代码可靠性.欢迎小伙伴们收藏关注,持续分享更多优质干货! ...
- 21种设计模式理论版
1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了.麦当劳 ...
- iOS 21种设计模式之工厂模式
原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=list 我的stackoverflow 感谢 感谢<Pro Objective-C ...
- 三句话巧记 23 种设计模式
大家都知道 23 种设计模式,其中又可以分成三类,创建型模式,结构型模式,行为型模式.但是总是在实际应用中忘记了,当具体看到一些代码的时候也想不起来具体对应的是哪种设计模式,对经常重构的代码人员来说是 ...
- 21 句话入门机器学习
[编者按]这是一篇关于机器学习工具包Scikit-learn的入门级读物.对于程序员来说,机器学习的重要性毋庸赘言.也许你还没有开始,也许曾经失败过,都没有关系,你将在这里找到或者重拾自信.只要粗通P ...
- 21句话入门机器学习
这是一篇关于机器学习工具包Scikit-learn的入门级读物.对于程序员来说,机器学习的重要性毋庸赘言.也许你还没有开始,也许曾经失败过,都没有关系,你将在这里找到或者重拾自信.只要粗通Python ...
- 能打开人心结的21句话
能打开人心结的21句话 2011-05-1916:23:46| 分类: 默认分类 阅读12 评论0 字号:大中小 订阅 1. 过错是暂时的遗憾,而错过则是永远的遗憾!不要害怕过错而错过-- 2.宁 ...
- 从键盘输入两个数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常, 而且无论在哪种情况下,“程序执行结束”这句话都会在控制
编写应用程序,从键盘输入两个数作为除数和被除数.要求程序中捕获NumberFormatException 异常和ArithmeticException 异常, 而且无论在哪种情况下,"程序执 ...
- 23 种设计模式的通俗解释
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源 | 肥朝 01 工厂方法 追 MM 少不了请吃饭了,麦 ...
最新文章
- C++中struct的使用
- 虚拟机下Linux安装图解之二:虚拟机的创建
- 考前自学系列·计算机组成原理·中央处理器知识点
- 设计模式C++实现(4)——单例模式
- Kubernetes探针踩坑记
- win10家庭版 安装docker并成功使用
- sublime生产力提升利器
- Elasticsearch的javaAPI之percolator
- 新华三(H3C)校园招聘技术类笔试题2019
- C#海康解码器上大屏代码事例
- 我的第一个项目催生的前世今生(LAIS,LKJ,DTU,记录器)
- esxi主机,提示“当前主机无管理网络冗余“报警。
- postman使用之Tests使用
- npm 报错 426 Upgrade Required
- java.time.format.DateTimeParseException: Text ‘xxxx-xx-xx xx:xx:xx‘ could not be parsed at index 10
- echarts实现中国地图和各省市地图
- graphpad图片怎么导出矢量图_Graphpad Prism 8如何绘制生存曲线
- FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset 错误解决
- 工作流(Workflow)简介
- c#加入json库引用,添加JSON包引用;新到Java