设计模式
柠檬(lemon)
这个作者很懒,什么都没留下…
展开
-
2静态代理模式-golang
代理模式(Proxy pattern)-核心作用: 通过代理,控制对对象的访问! 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法方法做后置处理。 AOP(Aspect Oriented Promarmming面向切片编程)的核心实现机制。 - 核心角色: a.抽象角色 -定义代理角色和真实角色的公共对外的方法 b.真实角色 - 实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 - 关.原创 2020-11-09 21:34:33 · 269 阅读 · 0 评论 -
1静态代理模式-java
1代理模式(Proxy pattern)-核心作用: 通过代理,控制对对象的访问! 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法方法做后置处理。 AOP(Aspect Oriented Promarmming面向切片编程)的核心实现机制。 - 核心角色: a.抽象角色 -定义代理角色和真实角色的公共对外的方法 b.真实角色 - 实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 - 关原创 2020-11-09 21:33:56 · 83 阅读 · 0 评论 -
2适配者模式-golang
/** 实现了PS/2 转换成USB目标接口(适配)*//*什么是适配器模式? - 将一个类接口转换成客户希望的另一个接口。Adapter模式使用原本由接口不兼容而不能一起工作的 那些类可以在一起工作。模式中的角色 - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可是接口。 - 需要适配的类(Adaptee):需要适配的类或适配者类 - 适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。*/package ad.原创 2020-11-09 20:33:58 · 107 阅读 · 0 评论 -
1适配者模式-java
什么是适配器模式? - 将一个类接口转换成客户希望的另一个接口。Adapter模式使用原本由接口不兼容而不能一起工作的 那些类可以在一起工作。模式中的角色 - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可是接口。 - 需要适配的类(Adaptee):需要适配的类或适配者类 - 适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。package com.mfz.adpapter;//被适配者public class.原创 2020-11-09 20:33:17 · 142 阅读 · 0 评论 -
2原型模式-golang
package prototypeimport "time"type Lemon struct { Name string Address string CreateTime time.Time}func New(name string, address string, time time.Time) *Lemon{ return &Lemon{ Name: name, Address: address, CreateTime: time, }原创 2020-11-07 12:40:48 · 118 阅读 · 0 评论 -
1原型模式-java
package com.mfz.prototype;import java.io.Serializable;import java.util.Date;public class Sheep implements Cloneable, Serializable { private String sname; private Date birthday; public Sheep(String sname, Date birthday) { this.sna原创 2020-11-07 11:42:06 · 83 阅读 · 0 评论 -
原型模式
原型模式(prototype)场景: - 思考一下:克隆技术是怎么样的过程?克隆羊多利大家还记得吗? - javascripte语言中,继承是怎么实现?那里面也有prototype,家还记得吗?原型模式: - 通过new产生一个对象需要非常繁琐的数据准备和权限访问,则可以使用原型模式。 - 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点 - 优势有:效率高(直接克隆,避免了重新执行构造过程步骤) - 克隆类似于new,但是不同于new。原创 2020-11-07 11:39:52 · 113 阅读 · 0 评论 -
2建造模式-golang
package builderimport "fmt"//引擎type Engine struct { Name string}//逃逸塔type EscapeTower struct{ Name string}//轨道仓type OrbitalModule struct { Name string}type AirShip struct{ Engine *Engine EscapeTower *EscapeTower OrbitalModule *Orbital原创 2020-11-06 00:26:57 · 162 阅读 · 0 评论 -
1建造模式-java
//产品对象类package com.mfz.builder;public class AirShip { private OrbitalModule orbitalModule; //轨道仓 private Engine engine; //发动机 private EscapeTower escapeTower; //逃逸塔 public AirShip() { } public AirShip(OrbitalModule orbitalModu.原创 2020-11-06 00:26:15 · 89 阅读 · 0 评论 -
建造者模式
场景: 我们需要建造一个复杂的产品。比如,神州飞船,iphone。这个复杂的产品的创建。有这样的 一个问题需要处理: .装配这些组件是不是有个步骤问题? 实际开发中,我们所需要的对象构建时,非常复杂,有很多步骤需要处理。 建造者模式的本质: - 分离了对象子组件的单独构造(由builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。 这个模式适用于:某个对象的构建过程复杂的情况下使用。 - 由于实现了构建和装配的解藕。不同的构建原创 2020-11-06 00:24:51 · 94 阅读 · 0 评论 -
2抽象工厂模式-golang
package abstractFactoryimport "fmt"type Engine interface { Run() Start()}type LuxuryEngine struct{}type LowEngine struct{}func (this *LuxuryEngine) Run(){ fmt.Println("百米加速秒级")}func (this *LuxuryEngine) Start(){ fmt.Println("启动fast")}f原创 2020-11-04 23:43:27 · 115 阅读 · 0 评论 -
1抽象工厂模式-java
//产品1package com.mfz.abstractFactory;public interface Engine { void run(); void start();}class LuxuryEngine implements Engine{ @Override public void run() { System.out.println("跑的快,降噪"); } @Override public void st原创 2020-11-04 23:42:26 · 88 阅读 · 0 评论 -
2工厂方法模式-golang
package factoryMethodimport "fmt"type Car interface { Run()}type AudiCar struct {}type BydCar struct {}func (this *AudiCar) Run(){ fmt.Println("Audi is Running")}func (this *BydCar) Run(){ fmt.Println("Byd is Running")}//工厂方法接口type原创 2020-11-04 23:41:39 · 89 阅读 · 0 评论 -
1工厂方法模式-java
1.工厂方法模式:- 为了避免简单工厂模式的缺点,不完全满足OCP.- 工厂方法模式和简单工厂模式最大的不同在于,简单工厂模式只有一个(对于一个项目或者一个独立的模块而言),而工厂方法模式有一组实现了相同接口的工厂类。package com.mfz.facotryMethod;public interface Car { void run();}package com.mfz.facotryMethod;public class Audi implements Car原创 2020-11-04 23:40:43 · 64 阅读 · 0 评论 -
2简单工厂实现(静态工厂)-java
package com.mfz.factory;//接口设计public interface Car { void run();}//接口实现者package com.mfz.factory;public class Audi implements Car { @Override public void run() { System.out.println("奥迪再跑"); }}//接收实现者package com.mfz.fact原创 2020-11-04 23:39:50 · 93 阅读 · 0 评论 -
2-1简单工厂实现(静态工厂)-golang
package simpleFactoryimport "fmt"//接口设计type Car interface { Run();}//产品结构1type Audi struct {}//产品结构2type Byd struct{}//接口实现func (this *Audi) Run(){ fmt.Println("奥迪再奔跑")}//接口实现func (this *Byd) Run(){ fmt.Println("比亚迪再奔跑")}func原创 2020-11-04 23:38:56 · 127 阅读 · 0 评论 -
工厂模式介绍
工厂模式: - 实现了创建者和调用者的分离。 - 详细分类: a.简单工厂模式 用来生生同一等级的结构中的任意产品(对于新增的产品,需要修改已有的代码) b.工厂方法模式 用来生产同一等级中的固定的产品(支持增加任意产品) c.抽象工厂模式 用来生产不同的产品族的全部产品。(对于新增产品,无能为力,支持增加产品族) 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。原创 2020-11-04 23:37:08 · 147 阅读 · 0 评论