自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 访问者模式Visitor

访问者模式Visitor例题:校长和院长检查教师和学生校长和院长检查教师的工作情况和学生的学习情况校长关注教师的教学工作量,学生学习的课程院长关注教师的课程,学生的学习成绩由于校长和院长对于教师和学生的关注点是不一样的,这就需要对教师和学生进行不同的处理教师的工作和学生的学习相对稳定,访问者和处理方式多种多样。import java.util.ArrayList;import java.util.List; //创建一个人员基类abstract class Person{ pr

2020-06-15 16:53:44 201

原创 命令( Command )模式

命令( Command )模式命令模式的动机(Motivation)在软件构建过程中,“行为请求者” 与“行为实现者须通常呈现一种“紧耦合”。但在某些场合一比 如需要对行为进行“记录、撤销/重(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。问题的引入——烧烤摊和烧烤店class Barbecuer { // 烤羊肉 public void BakeMutton() {

2020-06-14 22:37:19 197

原创 职责链( Chain of Responsibility)模式

职责链( Chain of Responsibility)模式职责链模式动机(Motivation)➢在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显式指定,将必不可少地带来请求发送者与接受者的紧耦合。➢如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。模式定义使多个对象都有机会处理请求,从而避免请求的发送者和.接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。问

2020-06-14 18:37:41 302

原创 组合(Composite)模式

组合(Composite)模式商品类别树+服装+男装-衬衣-夹克+女装-裙子-套装特点:有一个根节点树枝节点叶子节点现在需要管理商品类别树,假设要求能实现输出如上商品类别树的结构功能,应该如何实现?分析:商品类别树的节点被分成两种,一种是容器节点,另一种是叶子节点。容器节点可以包含其他容器节点或者叶子节点不带模式的解决方案import java.util.ArrayList;import java.util.Collection;

2020-06-14 16:44:41 214

原创 备忘录模式

备忘录模式游戏进度遇到大boss的时候都会保存一下进度:游戏角色的生命力,攻击力,防御力等的数据。如果:打过了就不需要恢复记录,打不过就复原到刚刚保存的记录重新打一遍boss,直到打死为止。class GameRole{ int Vitality;//体力 int Attack;//攻击力 int Defense;//防御力 public int getVitality() { return Vitality; } public void setVitality(int vitalit

2020-06-14 13:41:25 109

原创 状态(State)模式

状态(State)模式状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的逻辑简化。人、事物在不同状态下会有不同表现,而一个状态又会在不同的表现下转移到下一个不同的状态。例题:工作状态的变化上午状态好,中午想睡觉,下午渐恢复,加班苦煎熬。class Work{ private int hour; private Boolean finish=false; public int getHour() { re

2020-06-14 11:44:24 196

原创 观察者模式

观察者模式办公时间做与工作无关的事情在老板到来时,前台负责通知好友进入工作状态注意开放-封闭原则,依赖倒转原则,降低耦合性。import java.util.ArrayList;class Secretary{//前台秘书类 private ArrayList<StockObserver>observers=new ArrayList<StockObserver>(); private String action; public void Attach(Stoc

2020-06-12 18:22:25 113

原创 策略模式

策略模式策略模式动机( Motivation )➢在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。➢如何在运行时根据霄要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?1.商场收银软件做一个商场收银软件,营业员根据客户购买商品单价和数量,向客户收费输入单价和数量,算出每种商品的小计,记录商品的清单,记录总计...

2020-06-12 17:38:11 98

原创 模板方法模式

模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。package mubanfangfa;import java.io.Console;public class Main { public static void main(String[] args) { // TODO Auto-generated method st

2020-06-11 12:09:31 98

原创 装饰模式

装饰模式装饰模式的动机(Motivation)➢在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。➢如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响...

2020-05-01 14:22:41 138

原创 手机软件何时统一——桥接模式

桥接模式桥接模式的动机(Motivation )➢由于某些类型的固有的实现逻辑,使得它们具有两个乃至多个变化的维度。➢如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化, 而不引入额外的复杂度?场景描述手机都有通讯录和游戏功能,M品牌手机和N品牌手机都有通讯录的增删改查功能和游戏功能。可以有2种结构结构1:父类是‘手机品牌’,下有‘手机品...

2020-04-28 22:54:59 169

原创 中介者模式

中介者模式动机(Motivation)➢在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一-种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。➢在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。问题的引入一联合国沟通世界各国生活中处处充斥着“中介者”,比如租房...

2020-04-28 22:01:11 110

原创 适配器模式

适配器模式动机(Motivation)➢在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是这些现存对象不满足新环境要求的接口。➢如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?适配器( Adapter)模式变压器( Adapter) :把一种电压变换成另一种电压。美国的生活用电电压是110V,而中国的...

2020-04-28 17:21:41 110

原创 外观模式

外观模式外观(门面)模式定义为子系统中的一组接口提供一个一致(稳定)的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。问题的引入病人与医院如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与另一个子系统的各个类打交道一样,不是一件容易的事情。可以...

2020-04-28 16:24:39 109

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

代理模式场景描述前提:卓贾易喜欢娇娇,但是,娇娇并不认识卓贾易:1.卓贾易给娇娇送花,送巧克力,送洋娃娃2.卓贾易也可以找一个人,让这个人把鲜花,巧克力和洋娃娃送给娇娇。这是两种方式,但达到的目的是一样的。下面看看这两个代码的实现。没有代理的代码//追求者类class Pursuit{ SchoolGirl mm; public Pursuit(SchoolGirl mm) ...

2020-04-28 14:51:21 206 1

原创 享元模式

问题的引入不同网站具体数据和模板不同,核心代码和数据库是共享的。假如有如下需求:有多个客户想要使用同样的网站但要求不太一样,有的希望是博客形式的,有的希望是产品图片说明形式的。简单代码实现如下://网站class WebSite{ private String name=""; public WebSite(String name) { this.name=name; } pu...

2020-04-14 22:48:16 92

原创 单例模式

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

2020-04-14 16:23:18 94

原创 建造者模式

建造者模式问题的引入——建造 “小人’用程序画一个小人,要求小人要有头、身体、两手、两脚。建造“小人”的过程是稳定的,都需要头身手脚。具体建造的细节不同,有胖瘦高矮等区别。...

2020-04-14 14:12:52 129

原创 原型(Prototype)模式

原型(Prototype)模式问题的引入———简历类定义一个简历类,必须要有姓名,可以设置性别和年龄,可以设置工作经历,最终需要三份简历。public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Resume a=new Resume("大鸟");...

2020-04-12 20:41:14 116

原创 抽象工厂模式

抽象工厂模式public class Main { public static void main(String[] args) { // TODO Auto-generated method stub User user=new User(); SqlserverUser su=new SqlserverUser(); su.Insert(user); su.GetUs...

2020-04-02 17:24:33 83

原创 工厂模式

工厂模式首先是一部分最简单的加减乘除的代码继承思想的编程import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in);...

2020-04-01 20:49:08 112

原创 设计模式七大原则之迪米特法则(LoD)

迪米特法则(LoD)基本介绍1)一个对象应该对其他对象保持最少的了解2)类与类关系越密切,耦合度越大3)迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public方法,不泄露任何信息。4)迪米特法则还有个更简单的定义:只与直接的朋友通信5)直接的朋友...

2020-03-31 20:06:04 235

原创 设计模式七大原则之接口隔离原则(ISP)

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

2020-03-31 19:51:14 167

原创 设计模式七大原则之合成/聚合复用原则(CARP)

合成/聚合复用原则(CARP)问题的提出:如果有类A和类B,类A有方法opertion1()、 opertion2() 和opertion3(),类B需要用类A的方法opertion2() ,如何做?法1:让类B继承类A,则类B可以使用类A的所有方法,当然包括opertion2() 。分析:1、暴露了类A的另外2个方法,虽然类B不需要使用,但是破坏封装。2、如果类A的实现发生...

2020-03-31 18:57:23 464

原创 设计模式七大原则之依赖倒转原则

依赖倒转原则基本介绍依赖倒转原则(Dependence Inversion Principle)是指:1)高层模块不应该依赖低层模块,二者都应该依赖其抽象2)抽象不应该依赖细节,细节应该依赖抽象3)依赖倒转(倒置)的中心思想是面向接口编程4)依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。 在Jav...

2020-03-21 18:51:48 117 1

原创 设计模式七大原则之里氏代换原则

里氏代换原则1、继承的优缺点继承的优点:子类拥有父类的所有方法和属性,从而可以减少创建类的工作量。提高了代码的重用性。  提高了代码的扩展性,子类不但拥有了父类的所有功能,还可以添加自己的功能。继承的缺点:继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。降低了代码的灵活性。因为继承时,父类会对子类有一种约束。增强了耦合性。当需要对父类的代码进行修改时,必须考...

2020-03-21 18:24:58 164

原创 设计模式七大原则之开放-封闭原则

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

2020-03-20 21:17:15 271

原创 设计模式七大原则之单一职责原则

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

2020-03-14 20:24:18 177

原创 详细介绍一下UML类图

下面详细的介绍一下UML类图注释(comment)注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素。类(Class)在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示:类的属性的完整表示方式:...

2020-03-10 20:49:33 417

原创 简单的html注册页面

根据今天所学,写的非常简单的一个注册页面,就想分享一下,还有很多不足,慢慢去改正。这个是效果图,只是一个简单的静态页面还有很多不足的,只希望自己可以坚持下去,不放弃!...

2020-03-04 23:03:17 187

原创 第一次使用processon画图——UML类图

首先直接搜索processon打开就可以或者使用下面的链接进入https://www.processon.com/进入之后可以注册自己的账号,然后就可以开始画图了。

2020-03-03 20:07:59 3161 3

空空如也

空空如也

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

TA关注的人

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