设计模式
三浪.
我只想做个与世无争的垃圾.
展开
-
设计模式之 适配器模式
适配器模式适配器:一个类的接口转换成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作通俗一点的解释:根据已有接口,生成想要的接口生活中的适配器:案例://计算器类class Calc { //加法 public int add(int a, int b) { return a + b; } //减法 public int sub(int a, int b) { return a - b;原创 2021-03-07 20:28:10 · 62 阅读 · 0 评论 -
设计模式之 观察者模式
观察者模式不使用任何设计模式,先凭感觉写一下代码//报社class Office { protected String newsPaper; public void setNewsPaper(String newsPaper) { //新报纸出炉 this.newsPaper = newsPaper; //发送报纸 dateChange(); } public void dateChange原创 2020-09-11 14:21:34 · 104 阅读 · 0 评论 -
设计模式之 代理模式
代理模式根据业务场景引出代理模式有以下功能, 能做加减乘除的类interface ICalc { int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b);}class CalcImpl implements ICalc { @Override public int add(int a, int b) {原创 2020-09-06 21:47:12 · 106 阅读 · 0 评论 -
设计模式之 策略模式
策略模式由场景推演策略模式业务场景:有一个游戏公司,制作一款鸭子游戏, 在这个鸭子游戏中,角色都是鸭子,不同的鸭子之间,有共性,所有为了提高代码重用性开发人员,就制作了一个鸭子的父类中: Duck,把这些鸭子的共性提到父类中此时在开发的初期阶段,并且负责编码的是同一个人//鸭子类abstract class Duck { //叫 public void quack() { System.out.println("嘎嘎"); }原创 2020-09-05 13:18:20 · 196 阅读 · 0 评论 -
设计模式之 模板设计模式
模板设计模式需求:测试ArrayList和LinkedList的添加效率public class AppTest { public static void main(String[] args) { System.out.println("开始"); //1970 - 1 - 1 long start = System.currentTimeMillis(); List<Integer> list原创 2020-09-03 13:36:42 · 150 阅读 · 0 评论 -
设计模式之 装饰器模式
装饰器模式由业务需求逐渐演变成装饰器模式业务场景:星巴克卖咖啡, 一开始,只有四种咖啡: Decaf Espresso DarkRoast HouseBlend因为所有咖啡都有共性, 所有开发人员,把它们的共性上提到一个父类中: Beverage步骤先定义一个抽象Beverage(饮料)类定义一个String类型的description(描述)把费用定义成抽象方法,因为每个咖啡的价格都是不一样的abstract class Beverage { pr原创 2020-09-03 12:56:21 · 206 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式逐步推导建造者模式的由来需求:定义一个电脑类,并且实例化出电脑类的对象,以及给该对象的属性赋值未使用建造者模式class Computer { private String cpu; private String gpu; private String memory; private String hd; public String getCpu() { return cpu; } public原创 2020-09-01 14:21:10 · 120 阅读 · 0 评论 -
设计模式之原型模式
原型模式引出问题:一开始没有使用原型模式:class WeekReport { private int id; //id private String emp; //员工 private String summary; //总结 private String plain; //下周计划 private String suggestion; //建议 private Date time; //提交时间 public int getId()原创 2020-08-31 13:12:46 · 148 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式学习工厂设计模式,必须知道的相关概念产品:类抽象产品:抽象类、接口产品蔟产品等级没有使用工厂模式://抽象产品interface Food { void eat();}//具体产品class Hamburger implements Food { @Override public void eat() { System.out.println("吃汉堡包!"); }}//=======上面为服原创 2020-08-28 12:14:34 · 156 阅读 · 0 评论 -
设计模式: 七大原则之 组成优于继承原则
七大原则之 组成优于继承原则组成优于继承原则继承就是一个类继承另一类我们已经知道类和类之间有3中 a. 继承 b. 依赖 c. 关联 关联可以细问为: 1). 组合 // <<-- 点题了 2). 聚合 所谓的组合模式关系强, 聚合是关系弱组合优于继承中的组合,其实指的就是关联关系例子:需求: 制作一个集合,要求该集合能记录曾今加过多少个元素.(不是统计某个时原创 2020-08-24 11:07:57 · 336 阅读 · 0 评论 -
设计模式: 七大原则之 里氏替换原则
七大原则之 里氏替换原则里氏替换原则: 任何能使用父类对象的地方,都应该能透明的替换为子类对象 也就说,子类对象可以随时随地替换父类对象,且替换完以后, 语法不会报错,业务逻辑也不会出现问题!反例(正方形不是长方形):当长方形的的长和宽相等时,就是一个特殊的长方形即正方形继承的作用: 1. 提高代码饿的重用性 2. 多态的前提以前两个类能不能发生继承关系的依据 主要看有没有"is a" 关系现在两个类能不能发生继承的关系 a. 主要看有没有"原创 2020-08-23 11:53:43 · 369 阅读 · 0 评论 -
设计模式: 七大原则之 迪米特法则(最少知道原则)
七大原则之 迪米特法则(最少知道原则)迪米特法则(最少知道原则): 一个类,对于其它类,要知道得越少越好 只和朋友通信什么是朋友: a. 类中的字段 b. 方法的参数 c. 方法的返回值 d. 方法中实例出来的对象反例:class Computer { public void saveData() { System.out.println("保存数据"); } public void原创 2020-08-23 11:03:13 · 357 阅读 · 3 评论 -
设计模式: 七大原则之 依赖倒置原则
七大原则之 依赖倒置原则依赖导致原则: 上层不能依赖于下层 它们都应该依赖于抽象什么是上层? 什么是下层?调用别方法,就是上层,被其它方法调用的, 就是下层例如:class A { public void method() { }}class B { public void test() { A a = new A(); a.method(); }}public class Demo { public static void main(S原创 2020-08-22 16:08:38 · 323 阅读 · 0 评论 -
设计模式: 七大原则之 接口隔离原则
七大原则之 接口隔离原则接口隔离原则: a. 不要在一个接口里面放很多的方法,这样会显得这个类很臃肿不堪 b. 接口应该尽量细化,一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加轻便灵活。反例://编写一个动物的接口public interface Animal { public void ear(); //吃 public void swim(); //游泳 public void fly(); //飞}//编写一个狗类,实原创 2020-08-22 15:13:52 · 139 阅读 · 0 评论 -
设计模式: 七大原则之 开闭原则
七大原则之 开闭原则开闭原则: a. 对扩展新功能是开放 b. 对修改原有功能关闭比如: 有一个刮胡刀,刮胡刀的作用就是刮胡子,现在想让刮胡刀具备吹风机能力 违反开闭原则的做法就是: 把吹风机功能加上了, 可是不能刮胡子了 符合开闭原则的做法就是: 把吹风机功能加上了, 且没有影响以前的刮胡子功能反例://写一个类class Car { private String brand; private doub原创 2020-08-22 14:56:55 · 173 阅读 · 0 评论 -
设计模式: 七大原则之 单一职责原则
七大原则之单一职责原则单一职责: 每个方法,每个类,每个框架只负责一件事情比如: Math.round(), 只负责完成四舍五入的功能,其它不管 (方法) Reader类,只负责读取文本文件 (类) SpringMVC,只负责简化MVC的开发(框架)...原创 2020-08-22 14:45:23 · 123 阅读 · 0 评论 -
设计模式的概述
设计模式设计模式,不是一种新的语言,也不是什么新api,更不是什么新的语法设计模式,是前辈们,不断总结,不断打磨出的设计方法, 不同设计模式适用于不同的场景设计模式,公认的有23种设计模式 分别对应23种设计场景. 这些设计模式我们不用怀疑它的功能! 因为这些设计模式是经过长期的实践考验,而留存下来的千万不要以为有任何一种设计模式,能解决任何问题,每一种设计模式只能用于适用的场景,而不是万能的设计模式有优点,也有缺点,我们不要为了适用设计模式而设计模式,切记防止"模式滥用"!原创 2020-08-22 14:36:21 · 86 阅读 · 0 评论 -
JAVA设计模式之装饰设计模式
装饰设计模式: 就是对想要的类功能进行加强…例如: FileWriter 与 BufferedWriterBufferedWriter就是用的装饰模式对FileWriter的功能进行增强. 效率的增强.不仅如此…装饰设计模式还有解耦的作用装饰和继承都能实现一样的特点: 进行功能的扩展增强但是继承耦合性会大…并且后面很能解耦装饰设计模式例子:人在以前只有饭吃…public clas...原创 2019-12-06 20:52:48 · 127 阅读 · 0 评论 -
JAVA设计模式之单例设计模式
设计模式设计模式就是对于问题行之有效的解决方式.总的来说就是一种思想.解决问题的思想.每一种语言(c++, JavaScript等)都有其对应的设计模式.....单例设计模式:解决问题: 就是可以保证一个类在内存中的对象唯一性 比如: 对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性 如何保证对象唯一性呢? 1.不允许其它程序用new...原创 2019-10-01 23:08:38 · 143 阅读 · 0 评论