策略模式
策略模式1.定义在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
2.具体实现2.1代码123456789101112131415161718192021222324252627282930313233343536373839404142package 设计模式;public class StrategyPattern { public static void main(String[] args) { Context c = new Context(); c.setStrategy(new ConcreteStrategyA()); c.strategyMethod(); c.setStrategy(new ConcreteStrategyB()); c.strategyMethod(); }}//抽象策略类interface Strategy { public void s ...
外观模式
外观模式1.定义外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
2.具体实现2.1代码1234567891011121314151617181920212223242526272829303132333435363738package 设计模式;public class FacadePattern { public static void main(String[] args) { Facade facade = new Facade(); facade.method(); }}//外观类 集成了多个子系统类class Facade { private SubSystem01 obj1 = new SubSystem01(); private SubSystem02 obj2 = new SubSystem02(); private SubS ...
享元模式
享元模式1.定义它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。(例如各种池技术就是使用的享元模式)
2.具体实现2.1代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package 设计模式;public class FlyweightPattern { public static void main(String[] args) { FlyweightFactory factory = new FlyweightFactory(); Flyweight f01 = factory.getFlyweight("a&qu ...
代理模式
代理模式1.定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
2.具体实现2.1代码
静态代理:静态代理中,我们对目标对象的每个方法的增强都是手动完成的,十分不灵活;从 JVM 层面来说, 静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class 文件。
1234567891011121314151617181920212223242526272829303132333435package 设计模式;public class ProxyPattern01 { public static void main(String[] args) { IphoneProxy iphoneProxy = new IphoneProxy(new IphoneFactoryImpl()); iphoneProxy.create(); }}//服务类接口interface IphoneFactory ...
模板方法模式
模板模式1.定义在模板模式(Template Pattern)中,定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。
2.具体实现2.1代码1234567891011121314151617181920212223242526272829303132333435363738package 设计模式;public class TemplateMethodPattern { public static void main(String[] args) { AbstractClass abstractClass = new ConcreteClass(); abstractClass.TemplateMethod(); }}//抽象模板类abstract class AbstractClass{ //模板方法 public void TemplateMethod() { Sp ...
适配器模式
适配器模式1.定义适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
2.具体实现2.1代码
类适配器模式的代码如下:
1234567891011121314151617181920212223242526package 设计模式;public class ClassAdapterPattern { public static void main(String[] args) { Target target = new ClassAdapter(); target.request(); }}//目标接口interface Target { void request();}//适配者接口class Adaptee { public void specificRequest() { System.out.printl ...
观察者模式
观察者模式1.定义观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式),在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。
2.具体实现2.1类图
2.2 代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package 设计模式;public class ObserverPattern { public static void main(String[] args) { Ring ring = new OverClassRing(); Student student1 = new MiddleSchoolStudent(); Student student2 = ...
单例模式
单例模式1.定义单例模式,属于创建类型的一种常用的设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2.具体实现2.1常用实现方式饿汉式1234567public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }
懒汉式1234567891011public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() ...
抽象工厂模式
抽象工厂模式1.定义抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。可以看做是简单工厂的改进(或进一步抽象)。
2.具体实现2.1类图
2.2代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139package 设计模式;/** * 抽象模式 * @author w ...
工厂方法模式
工厂方法模式1.定义工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。
2.具体实现2.1类图
2.2代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package 设计模式;public class FactoryMethodPattern { public static void main(String[] args) { Water water = new DrinksFactory().createWater(); Water water1 = new SodaWaterFactory().createWater(); water.show(); ...