设计模式
菜鸡的程序猿
这个作者很懒,什么都没留下…
展开
-
Java设计模式之访问者模式
访问者模式(Visitor)表示一个作用于某对象结构中的个元素的操作,它可以使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作最简单的编程实现简单的面向对象编程这种方法,如果我在加一个结婚的状态,还要修改源码。Element类:public abstract class Person { protected String gender; public abstract void accept(State state);}ConcreteElementA:原创 2020-08-23 16:20:34 · 115 阅读 · 0 评论 -
Java设计模式之解释器模式
解释器模式(Interpreter)给定一个语言,定义它的文法的一种表示。并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。正则表达式就是如此。演奏内容类:public class PlayContext { private String context; public PlayContext(String c原创 2020-08-23 14:38:34 · 125 阅读 · 0 评论 -
Java设计模式之享元模式
享元模式运用共享技术有效的支持大量细粒度的对象。但是这样算是基本实现了享元模式的共享对象的目的,不管建几个网站,只要购物网站都是一样的,只要是游戏网站也是完全相同的,但是这样也成为了一个问题,你给用户建造的网站不是一模一样的,他们的数据是不可能一样的,所以至少他们都应该有自己的账号。内部状态和外部状态在享元对象内部并且不会随环境改变而改变的共享部分,可以成为享元对象的内部状态,而随环境改变而改变的,不可以共享的状态就是外部状态。如果能发现这些实例除了几个参数外基本上都是相同的,如果能把这些参数移动原创 2020-08-23 10:29:23 · 91 阅读 · 0 评论 -
Java设计模式之职责链模式
职责链模式使多个对象都有机会处理请求,从而避免请求的发起者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。、比如在公司请假,经理处理不了的,上报给总监,总监处理不了的上报给总经理。管理者抽象类:public abstract class Manager { //名字 protected String name; //上级 protected Manager superManager; public Manag原创 2020-08-22 19:09:03 · 83 阅读 · 0 评论 -
Java 设计模式之组合模式
组合模式(Composite)将对象组合成树形结构以表示“部分-整体“的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。公司管理系统公司:public abstract class Company { protected String name; public Company(String name){ this.name = name; } public String getName() { return n原创 2020-08-21 08:31:02 · 152 阅读 · 0 评论 -
Java 设计模式之备忘录模式
备忘录模式(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。游戏角色://游戏角色public class Actor { //生命力 private int vit; //攻击力 private int atk; //防御力 private int def; public Actor(int vit, int atk, int def) {原创 2020-08-20 21:30:28 · 113 阅读 · 0 评论 -
Java 设计模式之状态模式
状态模式(State)当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要是解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列的类中,可以把复杂的逻辑简化。如果这个状态判断很简单,就没必要用状态模式了。状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易的增原创 2020-08-20 20:07:52 · 90 阅读 · 0 评论 -
Java设计模式之观察者模式
观察者模式又叫做发布-订阅模式(Publish/Subscribe)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,是他们能够自动更新自己。比如有两个小同学在公司里上班,但是老板一走,他们就不工作,做自己喜欢做的事,但是为了防止老板突然袭击,他们给前台小姐姐送了很多好吃的,让小姐姐及时通知他们老板回来了,才能做好准备。(主题接口)通知者://通知者接口public interface Subject { //通知原创 2020-08-18 21:17:05 · 81 阅读 · 0 评论 -
Java 设计模式之建造者模式
建造者模式(Builder):建造的过程是稳定的。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如果需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们就需要建造者模式,如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到他们,而具体的建造的过程和细节就不需要知道了。Builder:是为创建一个Product对象的各个部件指定的抽象的接口。ConcreteBuilder:是具体的建造者,实现Builder接口,构造和装原创 2020-08-18 07:54:14 · 76 阅读 · 0 评论 -
Java 设计模式之外观模式
外观模式(Facade)为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口,这个接口使得这一子系统更加容易使用。子系统:子系统一:public class SubSystemOne { public void methodOne(){ System.out.println("子系统方法一"); }}子系统二:public class SubSystemTwo { public void methodTwo(){ Sys原创 2020-08-17 21:36:01 · 79 阅读 · 0 评论 -
Java 设计模式之模板方法模式
模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法时的子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤简单来说,当我们要完成在某一细节层次一致的一个过程或则一系列的步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。比如:高中考试,大家都是用的同一张类型的试卷,只是填的答案不同。我们这个时候就需要把试题和答案分开,抽象出一个父类,让两个子类去继承他,公共的试题代码写到父类当中。...原创 2020-08-17 20:39:14 · 77 阅读 · 0 评论 -
Java 设计模式之简单工厂模式和工厂方法模式
简单工厂模式以计算器为例,实现客户的需求运算类:public interface Operator { double result(double num1,double number2);}加法:public class AddOperator implements Operator { @Override public double result(double num1, double num2) { return num1 + num2; }原创 2020-08-16 23:02:25 · 191 阅读 · 0 评论 -
Java 设计模式之代理模式
代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。比如:张三喜欢小红,但是他难以说出口,这个时候他想到了他的好兄弟,他于是拜托他的好兄弟李四代替他去给小红说喜欢他,送她鲜花,送她巧克力…礼物接口:public interface Gift { //送洋娃娃 void GiveDolls(); //送鲜花 void GiveFlowers(); //送巧克力 void GiveChocolate();}追求者:public cl原创 2020-08-16 21:11:02 · 60 阅读 · 0 评论 -
Java 设计模式之装饰模式
装饰模式Decorator:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加的灵活。比如张三想穿衣服,不知道穿什么我们这个时候就要给他装饰,让他穿上衣服所以:首先由个Person类public class Person { //姓名 private String name; public Person(){} public Person(String name){ this.name = name; } pu原创 2020-08-16 20:23:53 · 109 阅读 · 0 评论 -
Java 设计模式之策略模式
基础的策略模式策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。比如:一个商场正在搞促销,有打八折的,有按正常价位收取的,七折,五折,满300减100,满200送50…其实商场收银时如何促销,用打折还是返利,其实都是一些算法。不管是打折,返利,都是一种现金收费的一种方式。首先要有一个现金收费的接口://现金收取的接口public interface CashSuper { //收取现金,参数是原价,返回的原创 2020-08-16 16:14:19 · 143 阅读 · 0 评论 -
Java 基础学习 设计模式之适配器模式
适配器(Adapter)模式用官方的话定义:将一个类的接口转换成客户希望的另外一个接口。主的目的是为了兼容性,让原本因接口不匹配、不兼容、不能一起工作的两个类可以协同工作。所以说,设计这个模式的目的就是让原本由于接口不兼容而不能一起工作的那些类可以在一起工作。分为:类适配器模式、对象的适配器模式、接口的适配器模式。合成复用原则:在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结构型模式。在这定义:需要适配的类,接口,对象我们称之为基础(Basic)适配器:(Adapter)原创 2020-08-14 17:24:18 · 100 阅读 · 0 评论