![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
小新不开心@
这个作者很懒,什么都没留下…
展开
-
设计模式学习笔记(40)——访问者模式及其实现
访问者模式一、问题引入校长和院长检查教师和学生校长和院长检查教师的工作情况和学生的学习情况;校长关注教师的教学工作量,学生学习的课程;院长关注教师的课程,学生的学习成绩。由于校长和院长对于教师和学生的关注点是不一样的,这就需要对教师和学生进行不同的处理。package operation;import java.util.ArrayList;import java.util.List; abstract class Person{ private String name; publ原创 2020-06-22 14:49:08 · 144 阅读 · 0 评论 -
设计模式学习笔记(39)——命令模式及其实现
命令模式一、紧耦合设计package operation;class Barbecuer{ public void BakeMutton() { System.out.println("烤羊肉串!"); } public void BakeChickenWing() { System.out.println("烤鸡翅!"); }}public class Main{ public static void main(String[] args){ Barbecuer b原创 2020-06-22 13:34:39 · 166 阅读 · 0 评论 -
设计模式学习笔记(38)——职责链模式及其实现
职责链模式一、加薪代码初步package operation;class Request{ private String requestType; public String GetRequestType() { return requestType; } public void SetRequestType(String requestType) { this.requestType = requestType; } private String requestContent原创 2020-06-22 11:41:59 · 143 阅读 · 0 评论 -
设计模式学习笔记(37)——组合模式及其实现
组合模式一、场景问题商品类别树+服装+男装-衬衣-夹克+女装-裙子-套装特点有一个根节点树枝节点叶子节点不带模式的解决方案:组合对象package operation;import java.util.ArrayList;import java.util.Collection; class Leaf{ private String name=""; public Leaf(String name) { this.name=name; } public原创 2020-06-20 17:21:10 · 189 阅读 · 0 评论 -
设计模式学习笔记(36)——备忘录模式及其实现
备忘录模式及其实现一、游戏存进度package operation;class GameRole{ private int vit; public int Vitality; public int Getvit() { return vit; } public void Setvit(int vit) { this.vit=vit; } private int atk; public int GetAttack(){ return atk; } public void原创 2020-06-15 17:39:31 · 190 阅读 · 0 评论 -
设计模式学习笔记(35)——状态模式及其实现
状态模式及其实现问题引入:上午状态好,中午想睡觉,下午渐恢复,加班苦煎熬,实际上是一种状态的变化,不同时间,会有不同状态。一、工作状态package operation; class Work{ private int hour; public int GetHour(){ return hour; } public void SetHour(int hour) { this.hour=hour; } private boolean finish=false; publi原创 2020-06-15 15:54:06 · 221 阅读 · 0 评论 -
设计模式学习笔记(34)——观察者模式实现
观察者模式办公室里大家在做别的事情,老板突然来了,需要通风报信。一、双向耦合的代码package operation;import java.util.ArrayList;class Secretary{//前台秘书类 private ArrayList<StockObserver>observers=new ArrayList<StockObserver>(); private String action; public void Attach(StockObser原创 2020-06-14 21:47:10 · 142 阅读 · 0 评论 -
设计模式学习笔记(33)——观察者模式
观察者模式1.介绍:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。2.方法:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。3.主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。4.何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。5.如何原创 2020-06-14 15:35:11 · 191 阅读 · 0 评论 -
设计模式学习笔记(32)——模板方法模式实现
一、重复=易错+难改package operation;//学生甲抄的试卷class TestPaperA{ //试题一 public void TestQuestion1() { System.out.print("杨过得到,后来给了郭靖,练成倚天剑、屠龙刀的玄铁可能是【】a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维"); System.out.print("答案:b"); } //试题二 public void TestQuestion2() { Sys原创 2020-06-14 15:28:52 · 480 阅读 · 0 评论 -
设计模式学习笔记(31)——模板方法模式
模板模式1.介绍:在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。2.方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。3.主要解决:一些方法通用,却在每一个子类都重新写了这一方法。4.何时使用:有一些通用的方法。**5.如何解决:**将这些通用算法抽象出来。6.关键原创 2020-06-14 09:02:51 · 124 阅读 · 0 评论 -
设计模式学习笔记(30)——策略模式实现
一、商场收银软件商场收银软件,营业员根据顾客所购买的商品的单价和数量,向客户收费。package operation;import java.util.Scanner;class Cash{ public String list=""; public Double totalPrice=0.0d; public void buttonOK() { Scanner sc=new Scanner(System.in); System.out.println("输入单价:"); St原创 2020-06-13 23:08:41 · 213 阅读 · 0 评论 -
设计模式学习笔记(29)——策略模式
策略模式1.介绍:在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。2.意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。3.主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。4.何时使用:一个系统有许多许多类,而区分它们的只是他们直原创 2020-06-13 17:16:21 · 191 阅读 · 0 评论 -
设计模式学习笔记(28)——桥接模式实现
桥接模式一、脱藕耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱,或称脱耦。脱耦是指将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联。将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。桥连模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥连模式的用意。二·、例题:手机都有通讯录和游戏功能,M品牌手机和N品牌手机都有通讯录的增删改查功原创 2020-06-13 13:11:46 · 575 阅读 · 0 评论 -
设计模式学习笔记(27)——桥接模式
桥接模式1.介绍:桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。2.意图:将抽象部分与实现部分分离,使它们都可以独立的变化。3.主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。4.何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。5.原创 2020-06-13 11:05:00 · 155 阅读 · 0 评论 -
设计模式学习笔记(26)——中介者模式实现
一、中介者模式package operation;//抽象中介者类,定义一个抽象的发送消息的方法,得到同事对象和发送的消息abstract class Mediator{ public abstract void Send(String message,Colleague colleague);}//抽象同事类abstract class Colleague{ protected Mediator mediator; public Colleague(Mediator mediato原创 2020-06-12 22:58:34 · 133 阅读 · 0 评论 -
设计模式学习笔记(25)——中介者模式
中介者模式1.介绍:中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。2.意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。3.主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应原创 2020-06-12 22:24:59 · 138 阅读 · 0 评论 -
设计模式学习笔记(24)——适配器模式实现
适配器模式适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。class Target{ public void Request() { System.out.println("普通请求!"); }}c原创 2020-06-12 21:50:44 · 117 阅读 · 0 评论 -
设计模式学习笔记(23)——装饰模式实现
装饰模式一、小菜扮靓第一版class Person{ private String name; public Person(String name) { this.name=name; } public void WearTShirts(){ System.out.print("大T恤"); } public void WearBigTrouser() { System.out.print("垮裤"); } public void WearSneakers() { Sy原创 2020-06-11 12:41:58 · 183 阅读 · 0 评论 -
设计模式学习笔记(22)——适配器模式
适配器模式1.介绍:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。2.方法:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。3.主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。4.何时使用:(1)系统需要使用现有原创 2020-06-02 08:53:50 · 132 阅读 · 0 评论 -
设计模式学习笔记(21)——装饰模式
装饰器模式1.介绍:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。2.方法:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。3.主要解决:一般的,我们为原创 2020-06-02 08:44:18 · 106 阅读 · 0 评论 -
设计模式学习笔记(20)——外观模式实现
外观模式一、股民炒股代码//股票1class Stock1{ //卖股票 public void Sell() { System.out.print("股票1卖出"); } //买股票 public void Buy() { System.out.print("股票1买入"); }}class Stock2{ //卖股票 public void Sell() { System.out.print("股票2卖出"); } //买股票 public void Buy原创 2020-06-01 22:57:21 · 137 阅读 · 0 评论 -
设计模式学习笔记(19)——代理模式实现
代理模式一、没有代理的代码//被追求者class SchoolGirl{ private String name; public String getName() { return name; } public void SetName(String value) { name=value; }}//追求者class Pursuit{ SchoolGirl mm; public Pursuit(SchoolGirl mm) { this.mm=mm; } publ原创 2020-06-01 22:13:13 · 170 阅读 · 0 评论 -
设计模式学习笔记(18)——外观模式
外观模式1.介绍:外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。2.方法:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。3.主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。4.何时使用:(1)原创 2020-06-01 19:55:05 · 105 阅读 · 0 评论 -
设计模式学习笔记(17)——代理模式
代理模式1.介绍:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。2.方法:为其他对象提供一种代理以控制对这个对象的访问。3.主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一原创 2020-06-01 19:50:00 · 181 阅读 · 1 评论 -
设计模式学习笔记(16)——享元模式实现
一、网站类class WebSite{ private String name=""; public WebSite(String name) { this.name=name; } public void Use() { System.out.println("网站分类:"+name); }}public class Main{ public static void main(String[] args){ WebSite fx=new WebSite("产品展示"); fx原创 2020-05-18 22:26:38 · 163 阅读 · 0 评论 -
设计模式学习笔记(15)——单例模式的实现
一、单例模式单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。package operation;class Singleton{ private static Singleton instance; private Singleton() {//构造方法为private,这就堵死原创 2020-05-18 21:46:12 · 169 阅读 · 0 评论 -
设计模式学习笔记(14)——享元模式
享元模式**1.介绍:**享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。2.方法:运用共享技术有效地支持大量细粒度的对象。3.主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象...原创 2020-05-06 20:54:32 · 110 阅读 · 0 评论 -
设计模式学习笔记(13)——单例模式
单例模式1.介绍:单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。2.方法:保证一个类仅有一个实例,并提供一个访问它的全局访问点。3...原创 2020-05-06 20:46:19 · 97 阅读 · 0 评论 -
设计模式学习笔记(12)——建造者模式实现
建造者模式一、建造小人一package operation;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; class PersonThinBuilder extends Frame{ /** * */ private static fina...原创 2020-04-19 14:51:51 · 151 阅读 · 0 评论 -
设计模式学习笔记(11)——原型模式实现
一、简历代码初步实现package operation;class Resume{ private String name; private String sex; private String age; private String timeArea; private String company; public Resume(String name) { this.nam...原创 2020-04-18 21:50:10 · 199 阅读 · 0 评论 -
设计模式学习笔记(10)——建造者模式
建造者模式1.介绍:建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。2.方法:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。3.主要解决:主要解决在软件系统中,有时候面...原创 2020-04-18 13:42:58 · 133 阅读 · 0 评论 -
设计模式学习笔记(9)——原型模式
原型模式1.介绍:原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据...原创 2020-04-18 13:38:18 · 127 阅读 · 0 评论 -
设计模式学习笔记(8)——抽象工厂模式实现
一、最基本的数据访问程序用“新增用户”和“得到用户”为例;假设只有ID和Name两个字段。class User{ private int id; public int ID; public int getId() { return id; } public void setId(int id) { this.id=id; } private String name; p...原创 2020-04-17 22:48:19 · 164 阅读 · 0 评论 -
设计模式学习笔记(7)——工厂模式实现
一、简单工厂模式package factory;import java.util.*;abstract class Operation{ double numbera=0; double numberb=0; public double getNumbera() { return numbera; } public void setNumbera(dou...原创 2020-04-17 16:40:36 · 190 阅读 · 0 评论 -
设计模式学习笔记(6)——抽象工厂模式
一、抽象工厂模式和工厂模式的区别抽象工厂模式和工厂模式的区别? - caoglish的回答 - 知乎https://www.zhihu.com/question/20367734/answer/82361745在这里贴一篇我觉得不错的知乎回答;供大家参考;二、抽象工厂模式1.概述:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又...原创 2020-04-12 14:52:36 · 158 阅读 · 0 评论 -
设计模式学习笔记(5)——工厂模式
工厂模式1.工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。2.方法:先定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类。3.主要解决:接口选择问题。4.何时使用:不同条件下创建不同实例时。5.如何解决:让其子类实...原创 2020-04-09 14:26:56 · 183 阅读 · 0 评论 -
设计模式学习笔记(4)——设计模式常用的七大原则2
五、合成/聚合复用原则合成/聚合复用原则是:尽量使用合成/聚合的方式,而不是使用继承1.合成/聚合复用原则来源:在面向对象的设计中,如果直接继承基类,会破坏封装,因为继承将基类的实现细节暴露给子类; 如果基类的实现发生改变,则子类的实现也发生改变;从基类继承而来的实现是静态的,不可能在运行时发生改变,没 有足够的灵活性。于是就提出了合成/聚合复用原则:尽量使用合成/聚合, 不...原创 2020-04-09 14:04:37 · 181 阅读 · 0 评论 -
设计模式学习笔记(3)——设计模式常用的七大原则1
设计模式常用的七大原则有:单一职责原则(SRP)开放-封闭原则(OCP)——面向对象设计的终极目标里氏代换原则(LSP)依赖倒转原则(DIP)合成/聚合复用原则(CARP)接口隔离原则(ISP)迪米特法则一、单一职责原则方法一:class Vehicle{public void run(String vehicle) {System.out. println(vehic...原创 2020-03-31 17:02:43 · 191 阅读 · 0 评论 -
设计模式学习笔记(2)——UML图详解
1、注释(comment)注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素。2、类(Class)在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示:类的属性的完整表示方式:可见性 名称 :类型...原创 2020-03-14 15:00:56 · 246 阅读 · 0 评论 -
设计模式学习笔记(1)——用processon画图
processon网站:https://www.processon.com/免费作图但是需要先注册,注册完有引导,然后点新建UML就可以作图了。以上为我自己画的效果图。原创 2020-03-03 19:57:37 · 285 阅读 · 0 评论