马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.工厂模式
- class Factory{
- createProduct(name){
- return new Product(name);
- }
- }
- class Product{
- constructor(name){
- this.name=name;
- }
- display(){
- console.log(`product:${this.name}`);
- }
- }
- //使用
- const factory=new Factory();
- const p1=factory.createProduct('P1');
- const p2=factory.createProduct('P2');
- p1.display()
- p2.display()
复制代码 2.单例模式
- class Singleton{
- static instance=null;
- constructor(){
- if(Singleton.instance){
- return Singleton.instance
- }
- Singleton.instance=this;
- }
- }
- //使用
- const instance1=new Singleton()
- const instance2=new Singleton()
复制代码 3.观察者模式
- class Subject{
- constructor(){
- this.observers=[];
- }
- addObserver(observer){
- this.observers.push(observer);
- }
- removerObserver(observer){
- this.observers=this.observers.filter(obs=>obs!==observer);
- }
- notifyObserver(){
- this.observers.forEach(obs=>obs.update());
- }
- }
- class Observer{
- constructor(name){
- this.name=name;
- }
- update(){
- console.log(`Observer ${this.name} has been notified`);
- }
- }
- //使用
- const subject=new Subject();
- const observer1=new Observer('1');
- const observer2=new Observer('2');
- subject.addObserver(observer1);
- subject.addObserver(observer2);
- subject.notifyObserver();
复制代码 4.发布订阅模式
- class Broker{
- constructor(){
- this.subscribers=[];
- this.state=0;
- }
- subscribe(subscriber){
- this.subscribers.push(subscriber);
- }
- setState(state){
- this.state=state;
- this.publish();
- }
- getState(){
- return this.state;
- }
- publish(){
- this.subscribers.forEach(sub=>sub.update());
- }
- }
- class Publisher{
- constructor(){}
- changeState(broker,state){
- broker.setState(state);
- }
- }
- class Subscriber{
- constructor(name,broker){
- this.name=name;
- this.broker=broker;
- this.broker.subscribe(this);
- }
- update(){
- console.log(`${this.name}:${this.broker.getState()}`);
- }
- }
- //使用
- const broker=new Broker();
- const publish=new Publisher();
- const subscribe1=new Subscriber('s1',broker);
- const subscribe2=new Subscriber('s2',broker);
- publish.changeState(broker,1);
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |