设计模式
图
★漂浮ing☆
奋斗ing
展开
-
访问者模式
访问者模式访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。为不同类型的元素提供多种访问操作方式,且可以在不修改原有系统的情况下增加新的操作方式,这就是访问者模式的模式动机。案例:学校领导访问老师和学生源代码:package Visitor;import java.util.ArrayList;import java.util.List;public class Visitor { public sta.原创 2020-06-14 14:08:17 · 169 阅读 · 0 评论 -
命令模式
命令模式简介:它将请求发送者,请求接收者解耦,可以让相同的发送者对应不同的接收者。命令模式定义:将一个请求封装成一个对象,从而通过不同的请求将客户端参数化,实现了请求排队,记录请求日志,可撤销操作案例:烧烤摊和烧烤店源代码:package Command;public class Command { public static void main(String[] args) { // TODO Auto-generated method stub Barbecuer bo原创 2020-06-13 13:36:00 · 160 阅读 · 0 评论 -
职责链模式
又迭代器模式。迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。案例:加薪申请、上报与审批源代码:package Iterator;public class Iterator { public static void main(String[] args) { // TODO Auto-generated method stub Manager xz1 =ne.原创 2020-06-13 12:54:12 · 160 阅读 · 0 评论 -
组合模式
组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。 叶子(Leaf):在组合中表示子节点对象,叶子节点不能有子节点。 合成部件(Composite):定义有枝节点的行为,用来存储部件,实现在Component接口中的有关操作,如增原创 2020-06-05 22:02:06 · 119 阅读 · 0 评论 -
备忘录模式
备忘录模式属于行为型模式,它通过在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。备忘录模式用户保存对象的状态,并且以后恰当时间可以再次恢复到此状态。即可以保存和获取该对象的状态。实例:打Boss 存档读档源代码:package org.zangyu.Memento;public class Memento { public static void main(String[] args) { // TODO Auto-generated method stu原创 2020-06-05 21:30:16 · 102 阅读 · 0 评论 -
状态模式
状态模式解决的问题:状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。案例:工作状态的变化源代码:package org.zangyu.state;public class State { public static void main(String[] args) { // TODO Auto-generated method stub Work ep =new Work();原创 2020-06-02 21:23:19 · 112 阅读 · 0 评论 -
观察者模式
基本定义:观察者模式是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。实例:公司前台,观察老板动向源代码:package org.zangyu.observer;import java.util.ArrayList;public class observer { public static void main(String[] args..原创 2020-06-02 21:10:48 · 226 阅读 · 0 评论 -
模板模式
动机:对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因,而无法和任务的整体结构同时实现。例题:考试的例子,考试题相同每个人的解答不同定义一个抽象类,将部分逻辑以具体方法以及具体子类实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同子类可以以不同的方式来实现这些抽象方法。实现代码:class TestPaper{ protected String Answer1() { return ""; } p原创 2020-05-14 15:46:06 · 112 阅读 · 0 评论 -
策略模式
策略模式是一种定义一些列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方法调用所有的算法,减少了各种算法类与使用算法类之间的耦合。在基本的策略模式中,选择所用具体实现的职责由客户端对象承担,并转给策略模式的Context对象。这本身并没有解除客户端需要选择判断的压力,可以将策略模式和简单工厂模式结合,选择具体来实现的职责就可以给Context来承担,最大化地减轻了客户端的职责。例子:商场收银软件原始代码:package org.zang...原创 2020-05-12 21:17:39 · 124 阅读 · 0 评论 -
装饰模式
装饰模式的动机(Motivation)➢在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。 ➢如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响降为最低?案例:人及其属性人有不同国家,如中国人、美国人, 如果有属性:高和富,则有组合: 高、富、高富等共3个原创 2020-05-08 22:19:37 · 126 阅读 · 0 评论 -
桥接模式
例子:手机通讯录、游戏类class HandsetGame{ public void Run() { }}//手机品牌Mclass HandsetBrandM extends HandsetBrand{ }//手机品牌Nclass HandsetBrandN extends HandsetBrand{ }//手机品牌M的游戏class HandsetBran...原创 2020-04-29 11:50:48 · 104 阅读 · 1 评论 -
中介者模式
中介者模式:用一个中介对象来封装一系列的对象的交互。中介者使个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。源代码:abstract class Mediator{ abstract void Send(String message,Colleague colleague) ;}abstract class Colleague { protect...原创 2020-04-28 22:49:06 · 131 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapater模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。class Target{ public void Request() { System.out.println("普通请求"); }}class Adaptee{ public void SpecificRequest() { Syst...原创 2020-04-24 22:18:15 · 90 阅读 · 0 评论 -
外观(门面)模式 (Facade Pattern)
定义:为子系统中的一组接口提供一个一致的界面,facaede模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。案例:2 投资者买股片vs基金投资者买股票,需要了解股票的各种信息,预测它的未来,风险反而大投资者买基金,基金经理人相对专业,不容易像散户那么盲目,基金经理人拿这些钱去做投资,然后大家获利由于在众多投资者对众多股票的联系太多,反而不利于操作,耦合性过高。而有了基金以后...原创 2020-04-21 20:08:37 · 200 阅读 · 0 评论 -
代理模式(Proxy)
动机:在面向对象时,有些对象由于某种原因,直接访问会给使用者,或者系统结构带来很多麻烦。增加一层间接层是软件开发中面对不失去透明操作对象的同时来管理/控制这些对象特有的负责性问题常见的解决方法。案例:追女孩送各种礼物import java.util.*;class SchoolGirl{ private String name; public String getName(...原创 2020-04-21 19:40:50 · 249 阅读 · 0 评论 -
享元模式
享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象。让不同的客户透明地使用面向对象的方法操作。例子:网站 class WebSite{ private String name=""; public WebSite(String name) { this.name=name; } public void Use() { System.out....原创 2020-04-14 20:59:36 · 88 阅读 · 0 评论 -
单例模式
单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问它的全局访问点。例子:配置文件源代码:public class AppConfig{ private String parameterA; private String parameterB; public String getParameterA() { return parameterA; }...原创 2020-04-14 20:19:18 · 93 阅读 · 0 评论 -
原型模式
原型模式原型模式就是利用一个原型对象创建另外的可利用的对象,,而且不需要知道任何创建的细节!夸张的简历源代码:class Resume{ private String name; private String age; private String sex; private String timeArea; private String company; publi...原创 2020-04-10 16:01:31 · 85 阅读 · 0 评论 -
建造者模式
建造者模式案例:建造小人一源代码:import java.util.*;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.lang.*;class main extends Frame{ public void paint...原创 2020-04-10 16:17:55 · 85 阅读 · 0 评论 -
抽象工厂模式
实现从Access换为使用Sqlserver,接着换为Oracle源代码:class User{ private int ID; private String name; public int getID() { return ID; } public void setID(int iD) { ID = iD; } public String getName(...原创 2020-04-01 20:49:06 · 143 阅读 · 0 评论 -
简单工厂模式
实现加减乘除。。并容易扩展其他运算方式工厂具有逻辑判断功能,一个工厂实现不同类的创建。一、简单工厂模式代码:class operationfactory{ public static operation creationoperation(String operation) { operation oper=null; switch(operation) {...原创 2020-04-01 20:29:12 · 144 阅读 · 0 评论 -
uml类图六大关系
类与类之间的关系接口在UML类图中,常见的有以下几种关系:依赖 关联 继承 实现 聚合 组合类图——依赖关系如果A类用到了B类 ,则A依赖于B, 没有B,A编译也不通过。public class PersonDao{}publ...原创 2020-03-10 20:40:36 · 680 阅读 · 2 评论 -
设计模式第一次作业——UML类图
UML画图网址:点我原创 2020-03-03 21:15:34 · 235 阅读 · 0 评论