设计模式
五月的大雄
这个作者很懒,什么都没留下…
展开
-
设计模式——原型模式
问题引入:夸张的简历。 1、最初代码: 简历类: class Resume {private String name; private String sex; private int age; private String timearea; private String company; public Resume(String name) { this.name=name; } public void SetpersonalInfo(String sex,int age) {原创 2020-06-11 20:40:03 · 152 阅读 · 0 评论 -
设计模式——享元模式
问题引入: 网站的设计,例:博客,写博客的人非常多,而且虽然每个人的博客的用户和内容不同(外部状态不同),但所有博文的页面布局等却都是相似甚至相同的(内部状态是一样的),倘若每一个人在写博客时都新实例化一个博客的对象是不现实的,会耗费大量的资源。又如在为客户设计网站时,有大量的企业提出了做网站的要求,但所对网站的要求类似,在这种情况下,倘若为每一家企业都申请空间,用不同的数据库,将类似要求的代码复制,这么做是不现实的。 一、网站例子最开始的代码到享元模式 1、最开始的一一实例化的代码: 网站类: class原创 2020-06-10 21:30:11 · 104 阅读 · 0 评论 -
设计模式——装饰模式
问题引入:穿衣装扮问题。 1、最初代码: 问题:将具体的打扮写到了类里面,但如果需要增加新的打扮方式的话,就必须在类里面增加新的服饰,这违背了开放——封闭原则。 2、初步改进: ** Person 类: class Person {private String name; public Person(String name) {this.name=name;} public void show() {System.out.println(name); } 服饰抽象类: abstract class原创 2020-06-10 09:34:00 · 148 阅读 · 0 评论 -
设计模式——中介者模式
一、引入 :国际组织与世界上各个国家之间的关系,联合国、世贸、世卫便扮演着中介者的角色 没有中介者–联合国,世界各国的关系便错综复杂,有了中介者,各个国家之间只需要通过与联合国联系便可以间接的与世界各国联系 二、中介者模式介绍 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 中介者UML类图: 三、...原创 2020-05-07 21:32:56 · 165 阅读 · 0 评论 -
设计模式——桥接模式
问题引入:实现不同品牌手机的不同的功能能操作,如不同品牌M牌手机,N牌手机,不同功能:通讯录、游戏功能等。(背景:pc硬件厂商专门生产硬件,软件统一是Windows操作系统,所以不同的软件在不同品牌的电脑中都能运行,而手机并没有统一的系统,即各个手机生产商即生产硬件,有开发自己的系统,导致软件在不同品牌手机上的不兼容) 初步设计(有N品牌和M品牌的手机,实现玩儿游戏的功能): 1、写一个手机品牌抽...原创 2020-05-07 20:41:48 · 107 阅读 · 0 评论 -
设计模式——代理模式
原创 2020-04-21 21:12:43 · 86 阅读 · 0 评论 -
设计模式——适配器模式
何时使用适配器模式: 想使用一个已经存在的类,但它的接口,也就是它的方法和你的要求不同时,考虑使用适配器模式。适配器模式多用于后期维护,类似一种亡羊补牢的方法,如果是在设计之初,直接把类似的功能类的接口设计的相同就可以了。 ...原创 2020-04-21 21:02:56 · 90 阅读 · 0 评论 -
设计模式——单例模式
单例模式: 保证一个类只有一个实例,并提供一个访问它的全局访问点 UMl类图: 多线程时的单例: 多线程程序下,防止产生多个实例,需加锁锁定。 每次调用都加锁,影响性能。应将其改进,只在实例未被创建时加锁,称之为双重锁定 代码中的两次判断是否为空的原因: 外层判断是为了判断是否有实例,若已有实例直接返回,若无实例,且有多个线程调用此方法时,两个线程都可通过第一层为空的判断,一个线程进入,另一个等...原创 2020-04-19 16:22:43 · 98 阅读 · 0 评论 -
presson绘图练习
原创 2020-03-03 20:22:34 · 486 阅读 · 0 评论 -
UML类图的六大关系
原创 2020-03-10 20:26:07 · 105 阅读 · 0 评论 -
设计模式——简单工厂vs工厂方法
计算器实例: (一)简单工厂: abstract class Operate { int Numb1,Numb2; abstract double getResult(); } class Jia extends Operate { double getResult() { return (Numb1+Numb2); } } class Jian ex...原创 2020-04-03 15:54:36 · 160 阅读 · 0 评论 -
设计模式——抽象工厂方法
工厂方法和抽象工厂方法的区别: 个人理解为抽象工厂方法是多个工厂方法,具体如下: 工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别...原创 2020-04-03 16:43:48 · 112 阅读 · 0 评论 -
设计模式——建造者模式
使用了建造者模式,用户只需要指定需建造的类型便可得到,无需知道具体的建造过程和细节 建造者模式UML类图: 例:麦当劳生产汉堡 产品类:(最终成型的汉堡) class Product { LinkedList<String>list=new LinkedList<String>(); public void Add(String s) { list.add(s)...原创 2020-04-10 10:05:46 · 171 阅读 · 0 评论