自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 设计模式——模板方法模式

一、模板方法模式1、MML图2、代码:abstract class AbstractClass{ public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); System.out.println(""); }}

2020-06-14 21:27:23 175

原创 设计模式——外观模式

一、外观模式外观模式:为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。1.UML图2、基本代码class SubSystemOne{ public void MethodOne() { System.out.println("子系统方法一"); }}class SubSystemTwo{ public void MethodTwo() { System.out.println("子系统方法二");

2020-06-14 18:46:33 142

原创 设计模式——访问者模式

一、访问者模式Visitor:是抽象访问者。为该对象结构中的ConerteElement的每一个类声明一个visit操作ConcreteVisitor:是一个具体的访问者,实现每个有Visitor声明的操作,是每个操作实现的部分ObjectStructure:能枚举它的元素可以提供一个高层的接口,用来允许访问者访问元素Element:定义一个accept方法,接收一个访问者对象ConcreteElement:为具体元素,实现了accept方法2、代码:import java.util.Arr

2020-06-14 18:22:15 169

原创 设计模式——命令模式

一、命令模式1、UML图Command模式将请求封装到一个对象Command中,将请求的接收者存放到具体的ConcreteCommand类中,实现调用操作的对象Client和操作的具体实现者Receiver之间的解耦。Command模式结构中,将请求的接收者(处理者) Receiver放到Command的具体子类ConcreteCommand中,当请求到来时(Invoker发出Invoke消息激活Command对象),ConcreteCommand将处理请求交给Receiver对象进行处理。2、代

2020-06-14 17:48:54 153

原创 设计模式——职责链模式

一、职责链模式1、UML图2、代码:Handler类:定义一个处理请示的接口。ConcreteHandler类:具体处理者类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理之,否则就将该请求转发给它的后继者。ConcretelHandler1类:当请求数在0到10之间则有权处理,否则转到下一位。ConcreteHandler2类:当请求数在10到20之间则有权处理,否则转到下一位。ConcreteHandler3类:当请求数在20到30之间则有权处理,否则转到下一位。abs

2020-06-14 17:28:45 141

原创 设计模式——组合模式

一、组合模式1、UML图2、基本代码Component :是组合中的对象声明接口,在适当的情况下,实现所有类公有接口的默认行为。声明一个接口用于访问和管理Component子部件。Leaf:在组合中表示叶子节点对象,叶子节点没有子节点。Composite:定义分支节点行为,用来存储子部件,在Component接口中实现与 子部件有关的操作,如add和remove等。import java.util.ArrayList; abstract class Component{ protecte

2020-06-14 16:36:22 104

原创 设计模式——备忘录模式

一、备忘录模式1、UML图2、基本代码class Originator{ private String state;//需要保存的属性,可能有多个 public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento CreateMemento() { //创建备忘录,将当前需要保存的信息导入并实例化一个M

2020-06-14 16:19:12 124

原创 设计模式——状态模式

一、状态模式1、UML图2、基本代码

2020-06-14 13:39:48 100

原创 设计模式——策略模式

一、引入例题题目要求:例题:做一个商场收银软件,营业员根据客户购买商品单价和数量,向客户收费。代码: import java.util.Scanner; class Cash{ public String list=""; public Double totalPrice=0.00; public void buttonOK() { Scanner sc=new Scanner(System.in); System.out.println("输入单价:"); String

2020-06-14 12:53:41 119

原创 观察者模式

一、背景引入:1、办公时间做与工作无关的事情,2、在老板到来时,前台负责通知好友进入工作状态初步代码: import java.util.ArrayList;class Secretary{//前台秘书类 private ArrayList<StockObserver>observers=new ArrayList<StockObserver>(); private String action; public void Attach(StockObserver

2020-06-12 22:43:54 120

原创 桥接模式

1、问题引入手机都有通讯录和游戏功能,M品牌手机和N品牌手机都有通讯录的增删改查功能和游戏功能。可以有2种结构:结构1: 父类是‘手机品牌’,下有‘手机品牌M’ 和‘手机品牌N’ ,每个子类下各有‘通讯录’和‘游戏’ 子类。结构2: 父类是‘手机软件’,下有‘通讯录’ 和‘游戏’ 子类,每个子类下各有‘手机品牌M’和‘手机品牌N’。结构1的结构图:结构2 的结构图:这种依赖关系限制了灵活性并最终限制了复用性!!改进:结构图手机品牌和手机软件之间的关系是手机品牌包含有手机软件,但软件

2020-05-24 22:37:11 117

原创 策略模式(Strategy)

1、策略模式结构图:2.模式分析:模式涉及到三个角色:环境(Context) 角色: 持有一个Strategy类的引用(上下文对象),负责和具体的策略类交互。抽象策略(Strategy)角色: 这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策咯类所需的接口。具体策略(ConcreteStrategy) 角色: 封装了具体的算法或行为。3.代码://Strategy类,定义所以支持的算法的公共接口//抽象算法类abstract class Strateg

2020-05-24 21:21:38 228

原创 中介者模式(Mediator)

一、中介者模式介绍1.中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。2.结构图:介绍:Mediator:抽象中介者,定义各个同事角色之间通信的接口,ConcreateMediator:具体的中介者,依赖相关的具体同事,Colleague:抽象同事,定义公共同事的接口。ConcreateColleague:具体的同事类,和其他同事通信通过中介角色。每个同事类有两种行为,一种是本身的行为,一

2020-05-11 22:14:15 167

原创 设计模式面向对象七大原则(五)——接口隔离原则(ISP)

一、接口隔离原则基本介绍不应该依赖不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。场景:(如图))1.类B实现接口Interface1 ,类A通过接口Interface1依赖(使 用)类B,但是只会用到1,2,3方法2.类D实现接口Interface1 ,类C通过接口Interface1依赖(使 用)类D,但是只会用到1,4,5方法...

2020-04-30 10:35:23 123

原创 设计模式面向对象七大原则(四)——合成/聚合复用原则(CARP)

一、问题的提出:如果有类A和类B,类A有方法opertion1()、 opertion2() 和opertion3(),类B需要用类A的方法opertion2() ,如何做?##########################################法1:让类B继承类A,则类B可以使用类A的所有方法,当然包括opertion2() 。分析:1、暴露了类A的另外2个方法,虽然类B...

2020-04-30 10:35:02 317

原创 适配器模式

1、适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一一起工作的两个类能够在一起工作。2.适配器模式的两种形式适配器adapter适配者adaptee:需要适配的类类适配器模式:适配器与适配者之间是继承(或实现)关系;对象适配器模式:适配器与适配者之间是关联关系。3.适配器模式结构图:4.适用情况:在以下各种情况下使用适配器模式(1)系统需要...

2020-04-28 23:02:11 189

原创 为别人做嫁衣——代理模式(Proxy)

背景:前提:卓贾易喜欢娇娇,但是,娇娇并不认识卓贾易:1.卓贾易给娇娇送花,送巧克力,送洋娃娃2.卓贾易也可以找一个人,让这个人把鲜花,巧克力和洋娃娃送给娇娇。########################代码:方案一:结构图//追求者类class Pursuit{ SchoolGirl mm; public Pursuit(SchoolGirl mm) { this....

2020-04-28 21:09:34 241

原创 享元模式

一享元模式应当在什么情况下使用(1)一个系统有大量的对象。(2)这些对象耗费大量的内存。(3)这些对象的状态中的大部分都可以外部化。(4)这些对象可以按照内部状态分成很多的组,当把外部对象从对象中剔除时,每一个组都可以仅用一个对象代替。*满足以上的这些条件的系统可以使用享元对象。使用享元模式需要维护一个记录了系统已有的所有享元的表,而这需要耗费资源。因此,应当在有足够多的享元实例可供共享...

2020-04-21 21:59:49 87

原创 单例模式

动机(Motivation)➢在软件 系统中,经常有这样一些特殊的类, 必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。例子:配置文件import java.io.IOException;import java.io.InputStream;import java.util.Properties;class AppConfig{ private Str...

2020-04-19 19:59:34 75

原创 建造者模式

用最简单的方法画一个小人问题的引入——建造 “小人’用程序画一个小人,要求小人要有头、身体、两手、两脚。建造“小人”的过程是稳定的,都需要头身手脚。具体建造的细节不同,有胖瘦高矮等区别。import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public cla...

2020-04-19 16:38:27 168

原创 原型模式(简历)

问题的引入———简历类定义一个简历类,必须要有姓名,可以设置性别和年龄,可以设置工作经历,最终需要三份简历。//最初的简历类public class yuanxing1 { public static void main(String[] args) { Resume a=new Resume("大鸟"); a.SetPersonalInfo("男", "21"); a.Se...

2020-04-19 16:04:52 523 1

原创 简单工厂模式

一、简单工厂模式根据提供的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的弗雷和公共的方法。1.工厂类角色: 工厂类在客户端的直接控制下常见产品对象。2.抽象类产品角色: 定义简单工厂创建的父类或它公共拥有的接口。可以是一类、抽象类或接口。3。具体产品角色: 定义工厂集体具体加工出的对象。########################################...

2020-04-14 18:41:35 71

原创 工厂方法模式

一、1、工厂方法模式是简单工厂模式的进步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且部分克服了它的缺点。2、抽象工厂角色: 是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。如本例中的OperationFactory。3.具体工厂角色: 这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产...

2020-04-14 18:38:50 98

原创 抽象工厂模式

一、1.抽象工厂(Factory)角色: 抽象工厂模式的核心,包含对多个产品等级结构的声明,任何工厂类都必须实现这个接口。2.具体工厂(ConcreteFactory)角色: 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。3.抽象(Product)角色: 抽象模式所创建的所有对象的父类,或声明所有具体产品所共有的公共接口。4具体产品(ConcreteProduct)角色...

2020-04-14 18:35:12 126

原创 设计模式面向对象七大原则(三)——里氏代换原则(Liskov Substitution Principle)

里氏代换原则——使得开放封闭成为可能一、继承的优缺点1 继承的优点:1)、子类拥有父类的所有方法和属性,从而可以减少创建类的工作量。2)、提高了代码的重用性。3)、提高了代码的扩展性,子类不但拥有了父类的所有功能,还可以添加自己的功能。2继承的缺点:1 )、 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。2)、降低了代码的灵活性。因为继承时,父类会对子类有一种约束。...

2020-03-17 20:24:25 142

原创 设计模式面向对象七大原则(二)——开放-封闭原则

一、基本原则1)开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则——面向对象设计的终极目标2)一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。3)当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。4)编程中遵循其它原则,以及使用设计模式的目的就是...

2020-03-17 19:24:08 240

原创 设计模式七大原则(一)——单一职责原则(SRP)

 就一个类而言,应该仅有一个引起它变化的原因(职责)。 职责就是对象能够承担的责任,并以某种行为方式来执行。可以将数据库的增删改查理解成职责,即对数据的基本操作。 单一职责原则对类来说,即一个类应该只负责一项职责。 如类A负责两个不同职责:职责1,职责2,当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。 主要根据不同的角度划分职责,比如,...

2020-03-17 10:05:08 127

原创 UML类图

1.怎么画类图?画UML图与写文章差不多,都是把自己的四星描述给别人看,关键在与思路和条例。在类图中包含以下几种模型元素,分别是:类、接口和类之间的关系。(1)注释(comment):注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形表示,其内防止说明文字,通过虚线连接被注释的元素。(2)类(class)在UML中类使用包含类名、属性和方法且带有分割线的矩形来表示。...

2020-03-10 20:37:21 395

原创 设计模式作业

设计模式的第一个作业

2020-03-03 20:40:52 300

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除