Java大话设计模式
文章平均质量分 71
程杰大话设计模式的Java实现。
不见长安见晨雾
皇上有旨,让太阳站下
展开
-
大话设计模式——总结
简单工厂模式:每一次扩展都要更改工厂类,对修改开放,不符合开闭原则。对象比流程更加稳定,也更加封闭。一、创建型模式创建型模式隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创建型模式在创建了什么、谁创建它、它是怎么被创建的,以及何时创建这些方面提供了很大的灵活性。当一个系统应该独立于它的产品创建、构成和表示时,应该考虑用创建型模式。建立相应数目的原型并克隆它们通常比每次用合适的状态手工实例化该类更方便一些。创建型模式抽象了实例化的过程。它们帮助一原创 2022-04-18 14:43:51 · 1725 阅读 · 0 评论 -
大话设计模式——访问者模式
男女对比——最简单的实现访问者模式讲的是表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。public class Client { // 最简单的编程实现 public static void main(String[] args) { System.out.println("男人成功时,背后多半有一个伟大的女人。"); System.out.println("女人成功时,背后大多有一个不成功的男人原创 2022-04-18 14:26:43 · 485 阅读 · 0 评论 -
大话设计模式——解释器模式
解释器模式解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言的中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。正则表达式就是解释器的一种应用,解释器为正则表达式定义了一个文法,如何表示一个特定的正则表达式,以及如何解释这个正则表达式。抽象表达式抽象表达式,声明一个抽象的解释操作,这个接口为抽象语法树中原创 2022-04-18 14:06:16 · 97 阅读 · 0 评论 -
大话设计模式——享元模式
需求:给不同的客户做网站/** * 网站类 */public class WebSite { private String name = ""; public WebSite(String name) { this.name = name; } public void use() { System.out.println("网站分类:"+name); }}客户端public class Client { publ原创 2022-04-18 13:49:58 · 330 阅读 · 0 评论 -
大话设计模式——中介者模式
中介者模式中介者模式又叫调停者模式。尽管将一个系统分割成许多对象通常可以增加其复用性,但是对象间相互连接的激增又会降低其可复用性了。大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以对系统的行为进行任何较大的改动就十分困难了。中介者模式:用一个中介对象来封装一系列的对象交互。中介者使个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。抽象中介者类/** * Mediator 抽象中介者类,定义了同事对象到中介者对象的接口原创 2022-04-18 11:51:56 · 346 阅读 · 0 评论 -
大话设计模式——职责链模式
加薪代码初步Request申请/** * 申请 */public class Request { // 申请类别 private String requestType; // 申请内容 private String requestContent; // 数量 private int number; public String getRequestType() { return requestType; }原创 2022-04-18 11:30:20 · 166 阅读 · 0 评论 -
大话设计模式——命令模式
紧耦合设计烤肉串者/** * 烤肉串者 */public class Barbecuer { // 烤羊肉 public void bakeMutton() { System.out.println("烤羊肉串"); } // 烤鸡翅 public void bakeChickenWing() { System.out.println("烤鸡翅"); }}客户端/** * 客户端程序与“烤肉串者”紧耦合,尽原创 2022-04-18 11:13:47 · 194 阅读 · 0 评论 -
大话设计模式——桥接模式
紧耦合的程序/** * 手机游戏类 */public abstract class HandsetGame { public abstract void run();}/** * M品牌手机中的游戏 */public class HandsetMGame extends HandsetGame { public void run() { System.out.println("运行M品牌手机游戏"); }}/** * N品牌手机中的游戏原创 2022-04-18 10:34:04 · 306 阅读 · 0 评论 -
大话设计模式——单例模式
单例模式单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。单例模式因为Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。实用类和单例类的区别:实用类不保存状态,仅提供一些静态方法或静态属性让你使用,而单例类是有状态原创 2022-04-15 10:12:47 · 623 阅读 · 0 评论 -
大话设计模式——迭代器模式
迭代器模式迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。你需要对聚集有多种方式遍历时,可以考虑使用迭代器模式。为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。foreach就是迭代器模式,不需要知道集合对象是什么。迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内原创 2022-04-15 10:06:23 · 2811 阅读 · 0 评论 -
大话设计模式——组合模式
组合模式组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。ComponentComponent为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个类用于访问和管理Component的子部件。public abstract class Component { protected String name; public Component(String name) { this.na原创 2022-04-14 10:16:11 · 382 阅读 · 0 评论 -
大话设计模式——备忘录模式
游戏存进度游戏角色类/** * 游戏角色类,用于存储角色的生命力、攻击力、防御力的数据。 */public class GameRole { // 生命力 private int vit; // 攻击力 private int attack; // 防御力 private int defense; // 状态显示 public void stateDisplay() { System.out.println("角色当原创 2022-04-13 10:03:43 · 114 阅读 · 0 评论 -
大话设计模式——状态模式
1)工作状态——函数版public class Main { public static int hour = 0;// 钟点 public static boolean workFinished = false; // 任务完成标记 /** * 定义一个“写程序”的函数,用来根据时间的不同体现不同的工作状态 */ public static void writeProgram() { if (hour < 12) {原创 2022-04-12 23:09:11 · 557 阅读 · 0 评论 -
大话设计模式——适配器模式
适配器模式适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。这里我们学习的是对象适配器。Target类这是客户所期待的接口.目标可以是具体的或抽象的类,也可以是接口。public abstract class Target {原创 2022-04-11 14:42:23 · 285 阅读 · 0 评论 -
大话设计模式——抽象工厂模式
1)最基本的数据访问程序用户类/** * 用户类 */public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return n原创 2022-04-11 10:40:59 · 559 阅读 · 2 评论 -
大话设计模式——观察者模式
双向耦合的代码案例描述:员工上班炒股,老板来的时候,前台秘书通知炒股的员工。/** * 看股票同事类 */public class StockObserver { private String name; // 耦合秘书 private Secretary sub; public StockObserver(String name,Secretary sub) { this.name = name; this.sub = sub;原创 2022-04-10 21:05:08 · 2802 阅读 · 0 评论 -
大话设计模式——建造者模式
建造小人一import java.awt.Color;import java.awt.Graphics;import javax.swing.JPanel;/** * 身体比较瘦的小人 */public class MyPanel1 extends JPanel{ public void paint(Graphics g){ super.paint(g); g.setColor(Color.RED); g.drawOval(50, 2原创 2022-04-10 13:56:11 · 260 阅读 · 0 评论 -
大话设计模式——外观模式
股民炒股代码/** * 股票1 */public class Stock1 { // 卖股票 public void sell() { System.out.println("股票1卖出"); } // 买股票 public void buy() { System.out.println("股票1买入"); }}/** * 股票2 */public class Stock2 { // 卖股票原创 2022-04-10 00:51:45 · 364 阅读 · 0 评论 -
大话设计模式——模板方法模式
模板方法模式当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。AbstractClassAbstractClass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类原创 2022-04-09 18:14:30 · 120 阅读 · 0 评论 -
大话设计模式——工厂方法模式
计算器案例产品体系/** * 操作符抽象类 */public abstract class Operation { private double numberA = 0; private double numberB = 0; /** * 子类实现运算操作 */ public abstract double getResult(); public double getNumberA() { return nu原创 2022-04-08 10:37:57 · 110 阅读 · 0 评论 -
大话设计模式——代理模式
追女孩案例/** * 被追求者类 */public class SchoolGirl { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}/** * 追求者类 */public class Pursuit { S原创 2022-04-08 10:14:07 · 250 阅读 · 0 评论 -
大话设计模式——装饰者模式
简单装扮需求:要求写一个可以给人搭配不同的服饰的系统,比如类似QQ、网络游戏或论坛都有的Avatar系统。/** * 需求:要求写一个可以给人搭配不同的服饰的系统,比如类似QQ、网络游戏或论坛都有的Avatar系统。 */public class Person { private String name; public Person(String name) { this.name = name; } public void wearTShirt原创 2022-04-07 10:21:15 · 293 阅读 · 0 评论 -
设计模式6大原则
单一职责原则就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来,也不难,那就是如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。开放-封闭原则一国两制在政治上是伟大的发明,在软件设计模式中原创 2022-04-06 00:37:11 · 177 阅读 · 0 评论 -
UML类图表示
类矩形框,分3层。第一层显示类的名称,如果是抽象类,用斜体显示。第二层是类的特性,通常是字段和属性。第三层是类的操作,通常是方法或行为(+表示public -表示private #表示protected)接口矩形表示法,顶端有<>,第一行:接口名称,第二行:接口方法。棒棒糖表示法:圆圈旁为接口名称,接口方法在实现类中出现。继承:空心三角形+实线实现:空心三角形+虚线关联:实线箭头当一个类‘知道’另一个类时,比如企鹅知道天气(成员变量引用)。聚合:空心的菱形+实线箭头原创 2022-04-06 00:31:10 · 497 阅读 · 0 评论 -
大话设计模式——策略模式
1)商场收银系统import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;i原创 2022-04-05 23:12:59 · 5919 阅读 · 3 评论 -
大话设计模式——简单工厂模式
面向过程需求:使用Java实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。1)简单实现public static void version1() { Scanner scanner = new Scanner(System.in); System.out.println("请输入数字A:"); int A = scanner.nextInt(); System.out.println("请输入数字B:");原创 2022-04-05 11:18:26 · 546 阅读 · 0 评论 -
创建者模式之单例设计模式
单例模式的实现饿汉式:类加载就会导致该单实例对象被创建 懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建饿汉式方式一:静态变量方式/** * 饿汉式: 静态成员变量 */public class Singleton { //1,私有构造方法 private Singleton() {} //2,在本类中创建本类对象 private static Singleton instance = new Singleton(); //原创 2022-03-14 22:41:14 · 417 阅读 · 0 评论